Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 03/21/19 in all areas

  1. Remy Lebeau

    Read of address DEADBEE7. - Source of this raise?

    In some piece of code somewhere, a pointer was set to $DEADBEEF, most likely after the object it was pointing to had been freed, and then that same pointer was used afterwards by code running at address $0040CEEC trying to access a data member at offset -8 ($DEADBEE7) via that pointer. Magic addresses like $DEADBEEF are commonly used for debugging such mistakes. In this case, the code at address $0040CEEC is the System._UStrAsg() function, which is used to assign a UnicodeString to another UnicodeString. Offset -8 is the StrRec.refCount field in the UnicodeString data header, which makes sense as UStrAsg() does increment that field. In other words, some piece of code tried to assign a UnicodeString value to a dead UnicodeString variable. UStrAsg() was called by TFieldValue.SetValue(), so SetValue() was likely called on an invalid TFieldValue object inside of TGridSet.CopyRow(), which was called by TDeliverySet.UpdateFromDeliverySet() inside of TDeliveryGrid.RefreshByRouteList(). So, start in RefreshByRouteList() and work your way into UpdateFromDeliverySet() and try to figure out how it may be accessing an invalid TFieldValue object. The Operation System, when the invalid memory address $DEADBEE7 is accessed. Delphi's RTL catches that error from the OS, creates an EAccessViolation object for it, and then raises it.
  2. Stefan Glienke

    Read of address DEADBEE7. - Source of this raise?

    Correct - it seems to be EurekaLog (see point 3. "When memory is released": https://www.eurekalog.com/help/eurekalog/index.php?memory_leaks_page.php) I would say its that a destroyed TFieldValue was not removed from the list inside the TGridSet - so locate where those are destroyed and check if they are properly removed from that list when in it.
  3. Sherlock

    Possible bug in debugger for Delphi 10.3.1

    Thank you all for the clarifications. I'll let the girls and boys at Embarcadero decide what to do with this. It is baffling however, how you are able to dismiss blatant reduction of usability with "the code was changed". I wish I could do this to my customers.
  4. ICS V8.58 added a new TSslX509Certs component allowing ICS servers to automatically order, download and install SSL/TLS certificates from various suppliers, including free certificates from Let's Encrypt, and commercial certificates for DigiCert, Comodo, Thawte and GeoTrust from CertCentre AG. It also acts as a private CA to issue local certificates. The TSslWSocketServer, TSslHttpServer, TSslHttpAppSrv, TIcsProxy and TIcsHttpProxy components can assign a TSslX509Certs component to support automatic certificate ordering of domain validated certificates with very little extra code. There is a new sample project OverbyteIcsX509CertsTst to demonstrate the TSslX509Certs component, which may be used as a standalone application to order X509 certificates from Let's Encrypt and CertCentre AG, and monitor the certificate orders database, and to issue own CA certificates. http://wiki.overbyte.eu/wiki/index.php/FAQ_Order_SSL_Certificates I'm about to revisit the TSslX509Certs component to support some Let's Encrypt changes like the new SSL challenge, so am interested in any feedback or suggestions from those that have used it, Even just the sample application which can be used to order certificates for other web servers or applications. Angus
  5. Do these data structures behave as intended in 10.3.1? In D2010 I had to use some workarounds, but they are still the best data-strutcures for my needs (instant view of huge items quantity in list-views and tree-views) and I'm preparing to migrate my main project (that widely use them) in 10.3.1.
  6. Remy Lebeau

    A directory translate

    I've already answered this for you. You need to use the IShellLibrary interface to get the filesystem path(s) that a given Library points to. Why do you keep ignoring me on this? You need to obtain the IShellLibrary interface for "Libraries\Pictures" first, Then you can call the IShellLibrary::GetFolders() method asking it for an IShellItemArray interface, Then you can the IShellItemArray::EnumItems() method to get an IEnumShellItems interface, Then you can enumerate it to access the individual IShellItem interfaces, And finally call IShellItem::GetDisplayName() asking for SIGDN_FILESYSPATH. This is all documented on MSDN.
  7. Remy Lebeau

    Check for override

    But then we would have been stuck with Seek64() moving forward, and much more code would have had to be re-written to migrate to it. It is funny though, they have actually added a separate Seek32() now in 10.3 Rio, which takes a 32bit Integer for the Offset and a TSeekOrigin enum instead of a Word for the Origin parameter. Wonder why they decided to do that after all these years, instead of just leaving the 32bit Seek() alone or remove it completely. That is exactly what they actually did originally when the 64bit Seek() was first added in Delphi 6. The Word-taking version of the 64bit Seek() was added much later in XE4. Why, I have no idea, especially since it was marked as 'deprecated' in the same version it was added in. The 'deprecated' directive was added in Delphi 6, the same version that added the first version of the 64bit Seek().
  8. Uwe Raabe

    Possible bug in debugger for Delphi 10.3.1

    Well, we don't like the code change either - not only for the lack of FItems being inspected during debugging. The point is that the debugger is not the right place to put the finger on. I wonder how the debugger could figure out that the fields FItems, FCount and FTypeInfo have to be merged into something like TArray<T>. On the other hand: TList<T> already provides a property List which has all things necessary in one place. If the evaluation were not restricted to variables and fields only, but could be extended to properties and functions, that would have much more value than just inspecting those TList items.
  9. Hallvard Vassbotn

    Read of address DEADBEE7. - Source of this raise?

    Typically debug-enabled version of memory manager. On Phone now, so can’t check, but I think FastMM4 uses a different pattern (all $80, IIRC)
  10. Stefan Glienke

    Possible bug in debugger for Delphi 10.3.1

    They probably should fix this with a debugger visualizer that knows to interpret the FItems field in a TListHelper properly (it also has the fields FCount and FTypeInfo to be able to)
  11. Someone willing to stay anonymous send me this information: Installation v8: Download and extract ICS package Exit BCB rename/delete \bpl\Overbyte*.* Compare and copy over: OverbyteICSJwaWinCrypt.inc {$HPPEMIT trailing semi-colon OverbyteICSCB2007Run/Design.cbproj pathing 1. Paths and Defines|Final Output says your bpl directory 2. Paths and Defines|BPI/Lib Output says bpl directory OverbyteICSCB2007Run/Design extra pragma links 1. #pragma link "crypt32.lib" 2. #pragma link "cryptui.lib" Source\OverbyteIcsSslSessionCache.pas 1. Comment out DateUtils (as breaks pch) 2. replace IncSecond function with t1 := ((t2 * SecsPerDay) + SessionTimeOut) / SecsPerDay; Source\OverbyteIcsCryptUiApi.pas comment out hppemit OverbyteIcscryptuiapi.h Copy source\zobj125 *.obj to source folder Start BCB Say yes to module load again message - if you say No then must use Regedit to remove the disabled package (Computer\HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Disabled Packages) Open \ics\Install\CB2007Install.groupproj Select and Build the run-time package in RELEASE mode (do not install). Select and Install the design-time package. Then do a "Save All" and a "Close All". Restart BCB Create cmp/ics/headers copy all C:\dev\cmp\ics\Lib\Debug\Win32\D2007\Overbyte*.hpp to that folder Diff with previous headers and comment out bits and bobs comment out all typedefs in OverbyteICSCryptUiApi.hpp Headers\OverbyteIcsHttpAppServer.hpp 1. AddGetHandler use EmptyStr instead of "" 2. AddGetHandler use EmptyStr instead of "" 3. AddGetAllowedPath use EmptyStr instead of "" 4. AddPostHandler use EmptyStr instead of "" 5. AddPostHandler use EmptyStr instead of "" 6. comment out IcsLoadTHttpAppSrvFromIni Headers\OverbyteIcsHttpSrv.hpp MakeCookie use EmptyStr Headers\OverbyteIcsSslHttpRest.hpp 1. RestRequest use EmptyStr 2. GrantAuthToken use EmptyStr Headers\OverbyteIcsSslSessionCache.hpp ensure your DateUtils include Headers\OverbyteIcsSslX509Certs.hpp 1. AddItem use EmptyStr 2. DumpJson use EmptyStr 3. CCGetRequest use EmptyStr Headers\OverbyteIcsSslX509Utils.hpp 1. WriteReqToBio EmptyStr 2. SaveToCADatabase EmptyStr OverbyteIcsSslX509Utils.hpp WriteReqToBio use EmptyStr headers\OverbyteIcsSuperObject.hpp 1. comment out virtual _di_ISuperObject __fastcall GetN 2. comment out _di_ISuperObject NWideString path 3. virtual bool __fastcall Validate remove L"" 4. comment out ParseString 5. comment out ParseStream 6. comment out ParseFile 7. comment out ParseEx 8. bool __fastcall Validate( remove L"" 9. _di_ISuperObject __fastcall SO( remove L"" headers\OverbyteIcsWinCrypt 1. comment out typedef _VTableProvStruc *PVTableProvStruc; 2. comment out typedef _VTableProvStruc TVTableProvStruc; add to Tools->Options->Environment Options->C+ Options->Paths & Dirs: Paths \ics\headers Load a project any In project options->Packages check the design packages are referenced from \bpl Check design TMS softwares packages are enabled (bizarrely this sometimes get unchecked ) Save all, close all, restart Distribute cmp directory to other dev(s)
×