AV on Delphi (XE) Close

Issue #66 invalid
Former user created an issue

TestInsight (1.1.2.0) causes AV in RTL150.BPL (Delphi XE Update 1, DDevExtensions 2.83) on close. Uninstalling TestInsight (or DDevExtensions) solves the issue.

Comments (7)

  1. Stefan Glienke repo owner

    Please provide more information - like a crash dump and your DDevExtensions settings. I have installed DDevExtensions 2.83 myself and I don't see any problem. Another way would be to open a second IDE and attach its debugger to the first one and then close it and get me the callstack of the AV.

  2. Piotr Antoniak

    OK. I made a small research and I found out that the problem occurs after installing three IDE Wizards: TestInsight (1.1.2.0), Parnassus Bookmarks (1.4.1.0) and DDevExtensions (2.83). Any two of them work fine but when the third is installed AV occurs. Instalation order does not matter (I checked all permutations of the three).

    Also I attached debugger to the second IDE and here is the event log:

    Thread Exit: Thread ID: 3332. Process bds.exe (544)
    Thread Exit: Thread ID: 3908. Process bds.exe (544)
    Module Unload: CodeSiteExpressVcl_Design150.bpl. Process bds.exe (544)
    Module Unload: CodeSiteExpressVcl150.bpl. Process bds.exe (544)
    Module Unload: dclDBXDrivers150.bpl. Process bds.exe (544)
    Module Unload: DBXInterBaseDriver150.bpl. Process bds.exe (544)
    Module Unload: DBXMySQLDriver150.bpl. Process bds.exe (544)
    Module Unload: dclwebsnap150.bpl. Process bds.exe (544)
    Module Unload: websnap150.bpl. Process bds.exe (544)
    Module Unload: dclmcn150.bpl. Process bds.exe (544)
    Module Unload: SampleVisualizers150.bpl. Process bds.exe (544)
    Module Unload: dcltouch150.bpl. Process bds.exe (544)
    Module Unload: vcltouch150.bpl. Process bds.exe (544)
    Module Unload: dclsmpedit150.bpl. Process bds.exe (544)
    Module Unload: dclmlwiz150.bpl. Process bds.exe (544)
    Module Unload: dclemacsedit150.bpl. Process bds.exe (544)
    Module Unload: dclact150.bpl. Process bds.exe (544)
    Module Unload: applet150.bpl. Process bds.exe (544)
    Module Unload: svnide150.bpl. Process bds.exe (544)
    Module Unload: svnui150.bpl. Process bds.exe (544)
    Module Unload: svn150.bpl. Process bds.exe (544)
    Module Unload: dclsmp150.bpl. Process bds.exe (544)
    Module Unload: vclsmp150.bpl. Process bds.exe (544)
    Module Unload: unittestide150.bpl. Process bds.exe (544)
    Module Unload: tgide150.bpl. Process bds.exe (544)
    Module Unload: delphierrorinsite150.bpl. Process bds.exe (544)
    Module Unload: delphicoreproide150.bpl. Process bds.exe (544)
    Module Unload: win32debugproide150.bpl. Process bds.exe (544)
    Module Unload: vclmenudesigner150.bpl. Process bds.exe (544)
    Module Unload: delphipro150.bpl. Process bds.exe (544)
    Module Unload: htmide150.bpl. Process bds.exe (544)
    Module Unload: DataExplorer150.bpl. Process bds.exe (544)
    Module Unload: delphidotnetcore150.bpl. Process bds.exe (544)
    Module Unload: todoide150.bpl. Process bds.exe (544)
    Module Unload: refactoride150.bpl. Process bds.exe (544)
    Module Unload: dbkdebugproide150.bpl. Process bds.exe (544)
    Module Unload: codetemplates150.bpl. Process bds.exe (544)
    Module Unload: startpageide150.bpl. Process bds.exe (544)
    Module Unload: projecttargets150.bpl. Process bds.exe (544)
    Module Unload: idefilefilters150.bpl. Process bds.exe (544)
    Module Unload: HtmlHelp2150.bpl. Process bds.exe (544)
    Module Unload: historyide150.bpl. Process bds.exe (544)
    Module Unload: fileexplorer150.bpl. Process bds.exe (544)
    Module Unload: comptoolbar150.bpl. Process bds.exe (544)
    Module Unload: CSDelphiMethodTracer.dll. Process bds.exe (544)
    Module Unload: BcDelphiEx.dll. Process bds.exe (544)
    Module Unload: DDevExtensionsXE.dll. Process bds.exe (544)    <----
    Module Unload: ParnassusBookmarks.dll. Process bds.exe (544)  <----
    Thread Exit: Thread ID: 1568. Process bds.exe (544)
    Module Unload: ParnassusAllPlugins.dll. Process bds.exe (544)  <----
    Module Unload: Security.dll. Process bds.exe (544)
    Thread Exit: Thread ID: 1896. Process bds.exe (544)
    Thread Exit: Thread ID: 3308. Process bds.exe (544)
    Thread Exit: Thread ID: 3300. Process bds.exe (544)
    Module Unload: TestInsight.dll. Process bds.exe (544) <====
    Module Unload: boreditu.dll. Process bds.exe (544)
    Module Unload: SHGINA.dll. Process bds.exe (544)
    Module Unload: BROWSEUI.dll. Process bds.exe (544)
    Module Unload: CSCUI.dll. Process bds.exe (544)
    Module Unload: CSCDLL.dll. Process bds.exe (544)
    Thread Exit: Thread ID: 1784. Process bds.exe (544)
    Thread Exit: Thread ID: 2996. Process bds.exe (544)
    Thread Exit: Thread ID: 3056. Process bds.exe (544)
    Thread Exit: Thread ID: 1188. Process bds.exe (544)
    Thread Exit: Thread ID: 2348. Process bds.exe (544)
    Thread Exit: Thread ID: 2512. Process bds.exe (544)
    Thread Exit: Thread ID: 1968. Process bds.exe (544)
    Thread Exit: Thread ID: 2132. Process bds.exe (544)
    Thread Exit: Thread ID: 564. Process bds.exe (544)
    Thread Exit: Thread ID: 1284. Process bds.exe (544)
    Thread Exit: Thread ID: 2468. Process bds.exe (544)
    Thread Exit: Thread ID: 3468. Process bds.exe (544)
    Thread Exit: Thread ID: 1676. Process bds.exe (544)
    Thread Exit: Thread ID: 1796. Process bds.exe (544)
    Thread Exit: Thread ID: 2500. Process bds.exe (544)
    Thread Exit: Thread ID: 1632. Process bds.exe (544)
    Thread Exit: Thread ID: 196. Process bds.exe (544)
    
  3. Stefan Glienke repo owner

    Can you please verify that it does not happen with only DDevExtensions and Bookmarks installed. On my side the AV that occurs when closing the IDE also appears when TI is not installed.

    This is the exception and its call stack I get when I have madExcept installed (otherwise I just get a "has stopped working" dialog):

    #!
    
    exception class   : EAccessViolation
    exception message : Access violation at address 5003A118 in module 'rtl150.bpl'. Read of address 5393024C.
    
    main thread ($6150):
    5003a118 +08 rtl150.bpl     System               11069   +1 System.TObject.Free
    50127c2a +1e rtl150.bpl     Rtti                  1055   +2 Rtti.TFinalizer.Destroy
    50040a44 +1c rtl150.bpl     System               28245   +3 System.TInterfacedObject._Release
    50040950 +10 rtl150.bpl     System               28061  +10 System.@IntfClear
    5003e374 +e4 rtl150.bpl     System               24190 +129 System.@FinalizeArray
    5003e264 +24 rtl150.bpl     System               23963  +21 System.@FinalizeRecord
    5003a186 +12 rtl150.bpl     System               11182  +13 System.TObject.CleanupInstance
    5003a0c9 +05 rtl150.bpl     System               11049   +1 System.TObject.FreeInstance
    5003a79e +02 rtl150.bpl     System               12163   +0 System.@ClassDestroy
    5003a109 +09 rtl150.bpl     System               11064   +1 System.TObject.Destroy
    50040a44 +1c rtl150.bpl     System               28245   +3 System.TInterfacedObject._Release
    50040950 +10 rtl150.bpl     System               28061  +10 System.@IntfClear
    5003e374 +e4 rtl150.bpl     System               24190 +129 System.@FinalizeArray
    5003e264 +24 rtl150.bpl     System               23963  +21 System.@FinalizeRecord
    5003a186 +12 rtl150.bpl     System               11182  +13 System.TObject.CleanupInstance
    5003a0c9 +05 rtl150.bpl     System               11049   +1 System.TObject.FreeInstance
    5003a79e +02 rtl150.bpl     System               12163   +0 System.@ClassDestroy
    501322e0 +88 rtl150.bpl     Rtti                  3619  +11 Rtti.TRttiObject.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 System.TObject.Free
    501478a5 +25 rtl150.bpl     Generics.Collections  1946   +3 Rtti.{Generics.Collections}TObjectDictionary<System.Pointer,Rtti.TRttiObject>.ValueNotify
    5013f890 +9c rtl150.bpl     Generics.Collections  1642  +12 Rtti.{Generics.Collections}TDictionary<System.Pointer,Rtti.TRttiObject>.Clear
    5013f6fd +0d rtl150.bpl     Generics.Collections  1522   +1 Rtti.{Generics.Collections}TDictionary<System.Pointer,Rtti.TRttiObject>.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 System.TObject.Free
    50132116 +1e rtl150.bpl     Rtti                  3562   +2 Rtti.TRttiPackage.Destroy
    5013c302 +22 rtl150.bpl     Rtti                  6413   +3 Rtti.TRealPackage.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 System.TObject.Free
    5012f711 +25 rtl150.bpl     Rtti                  3011   +2 Rtti.TRttiPool.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 System.TObject.Free
    50130474 +3c rtl150.bpl     Rtti                  3256   +6 Rtti.TPoolToken.Destroy
    50040a44 +1c rtl150.bpl     System               28245   +3 System.TInterfacedObject._Release
    50040950 +10 rtl150.bpl     System               28061  +10 System.@IntfClear
    5003e374 +e4 rtl150.bpl     System               24190 +129 System.@FinalizeArray
    5003e264 +24 rtl150.bpl     System               23963  +21 System.@FinalizeRecord
    5003b84e +3e rtl150.bpl     System               15309  +20 System.FinalizeUnits
    14408c88 +54 madExcept_.bpl madExcept                       InterceptFinalizeUnits
    5003be1d +9d rtl150.bpl     System               16304  +75 System.@Halt0
    7750cd63 +00 ntdll.dll                                      LdrShutdownProcess
    7750ce0c +7c ntdll.dll                                      RtlExitUserProcess
    5009b366 +aa rtl150.bpl     Classes               2538  +36 Classes.TRegGroup.UnregisterModuleClasses
    5009b874 +24 rtl150.bpl     Classes               2765   +4 Classes.TRegGroups.UnregisterModuleClasses
    50040892 +2e rtl150.bpl     System               27991   +5 System.NotifyModuleUnload
    77127c02 +22 KERNEL32.DLL                                   BaseThreadInitThunk
    
  4. Piotr Antoniak

    Yes, I confirm. There is no AV when I have installed DDevExtensions and Bookmarks together. But installing TI gives AV on IDE closing. Here is the exception and its call stack from madExcept:

    exception class    : EAccessViolation
    exception message  : Access violation at address 5003A118 in module 'rtl150.bpl'. Read of address 539302F4.
    
    main thread ($5f8):
    5003a118 +08 rtl150.bpl     System               11069   +1 TObject.Free
    50127c2a +1e rtl150.bpl     Rtti                  1055   +2 TFinalizer.Destroy
    50040a44 +1c rtl150.bpl     System               28245   +3 TInterfacedObject._Release
    50040950 +10 rtl150.bpl     System               28061  +10 @IntfClear
    5003e374 +e4 rtl150.bpl     System               24190 +129 @FinalizeArray
    5003e264 +24 rtl150.bpl     System               23963  +21 @FinalizeRecord
    5003a186 +12 rtl150.bpl     System               11182  +13 TObject.CleanupInstance
    5003a0c9 +05 rtl150.bpl     System               11049   +1 TObject.FreeInstance
    5003a118 +08 rtl150.bpl     System               11069   +1 TObject.Free
    501478a5 +25 rtl150.bpl     Generics.Collections  1946   +3 Rtti.{Generics.Collections}TObjectDictionary<System.Pointer,Rtti.TRttiObject>.ValueNotify
    5013f890 +9c rtl150.bpl     Generics.Collections  1642  +12 Rtti.{Generics.Collections}TDictionary<System.Pointer,Rtti.TRttiObject>.Clear
    5013f6fd +0d rtl150.bpl     Generics.Collections  1522   +1 Rtti.{Generics.Collections}TDictionary<System.Pointer,Rtti.TRttiObject>.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 TObject.Free
    50132116 +1e rtl150.bpl     Rtti                  3562   +2 TRttiPackage.Destroy
    5013c302 +22 rtl150.bpl     Rtti                  6413   +3 TRealPackage.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 TObject.Free
    5012f711 +25 rtl150.bpl     Rtti                  3011   +2 TRttiPool.Destroy
    5003a118 +08 rtl150.bpl     System               11069   +1 TObject.Free
    50130474 +3c rtl150.bpl     Rtti                  3256   +6 TPoolToken.Destroy
    50040a44 +1c rtl150.bpl     System               28245   +3 TInterfacedObject._Release
    50040950 +10 rtl150.bpl     System               28061  +10 @IntfClear
    5003e374 +e4 rtl150.bpl     System               24190 +129 @FinalizeArray
    5003e264 +24 rtl150.bpl     System               23963  +21 @FinalizeRecord
    5003b84e +3e rtl150.bpl     System               15309  +20 FinalizeUnits
    598592a4 +54 madExcept_.bpl madExcept                       InterceptFinalizeUnits
    598592ac +00 madExcept_.bpl madExcept                       InterceptHalt0FinalizeUnits
    5003be1d +9d rtl150.bpl     System               16304  +75 @Halt0
    7c9224c5 +00 ntdll.dll                                      LdrShutdownProcess
    5009b366 +aa rtl150.bpl     Classes               2538  +36 TRegGroup.UnregisterModuleClasses
    5009b874 +24 rtl150.bpl     Classes               2765   +4 TRegGroups.UnregisterModuleClasses
    5009be2e +32 rtl150.bpl     Classes               2936   +3 UnRegisterModuleClasses
    50040892 +2e rtl150.bpl     System               27991   +5 NotifyModuleUnload
    

    madExcept shows (on its last tab - disasm) that the AV is caused by TObject.Free:

    5003a110           public System.TObject.Free:    ; function entry point
    5003a110    11068    test    eax, eax
    5003a112             jz      loc_5003a11b
    5003a114    11069    mov     dl, 1
    5003a116             mov     ecx, [eax]
    5003a118             call    dword ptr [ecx-4]
    5003a11b    11070    ret
    
  5. Stefan Glienke repo owner

    I am not saying I don't believe you as it sure is the case for you this way. But from my observations this error does not get caused by TestInsight. This is also confirmed by David Millington who is the author or Bookmarks and he was also able to reproduce it without TI installed afaik. Also the callstack is likely caused by some hook going wild so it might be a red herring. TestInsight is neither using System.Rtti nor installing any hooks.

    That means I am going to close this issue on my side and want to refer you to David instead who is already working on it because there is nothing that I can do on my side.

  6. Log in to comment