Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delphi2007: Crash when continuing paused app in debugger

We often experience crashes when starting an app in the D2007 debugger, pausing it and continuing it (by pressing F9). E.g

  • create a VCL app
  • drop a TButton and a TEdit on the main form
  • add this OnClick handler for Button1:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      while True do
      begin
        for i := 0 to 9999 do
          Edit1.Text := IntToStr(Random(i));
        Application.ProcessMessages;
      end;
    end;
    
  • save and debug the app
  • press Button1
  • focus the IDE
  • click the "Pause" button
  • press F9.

Almost always we get an access violation. I tested this under Windows 7/64bit, my colleague under XP/32bit. In my colleague's D2006 we couldn't reproduce this error.

Can you reproduce this? Any ideas how to fix it?

like image 597
Uli Gerhardt Avatar asked Mar 03 '11 13:03

Uli Gerhardt


1 Answers

We also have this now and then in D2010 (and in D2007 before), but I could not reproduce this. (we use Win7 64bit too) I'll try to reproduce this with your test app, thanks! Now hope this can be solved somehow...

Edit: cannot reproduce this in D2010... will try D2007

Edit2: but I can reproduce this in D2007!
I also get some weird errors in event log:

Debug Output:    *** A stack buffer overrun occurred in   "C:\test\Project7.exe" :   Process Project7.exe (2584)
Debug Output: This is usually the result of a memory copy to a local buffer or structure where the size is not properly calculated/checked.  Process Project7.exe (2584)
Debug Output: If this bug ends up in the shipping product, it could be a severe security hole.  Process Project7.exe (2584)
Debug Output: The stack trace should show the guilty function (the function directly above __report_gsfailure).  Process Project7.exe (2584)
Debug Output:  *** enter .exr 772B43D0 for the exception record  Process Project7.exe (2584)
Debug Output:  *** then kb to get the faulting stack   Process Project7.exe (2584)

When I use my stack viewer (http://code.google.com/p/asmprofiler/wiki/ProcessStackViewer) and raw stack tracing of the current Delphi thread (that gave the error?), I see the following stack:

[772791B3]{ntdll.dll   } RtlUnhandledExceptionFilter + $12
[7725CDF4]{ntdll.dll   } Unknown function at CsrVerifyRegion + $1B0
[771D28A6]{ntdll.dll   } memcpy + $5E6
[7725CDE4]{ntdll.dll   } Unknown function at CsrVerifyRegion + $1A0
[7725CDF4]{ntdll.dll   } Unknown function at CsrVerifyRegion + $1B0
[77243509]{ntdll.dll   } Unknown function at RtlUlonglongByteSwap + $16299
[771F6AC9]{ntdll.dll   } Unknown function at RtlDosSearchPath_Ustr + $ADA
[771F6ADD]{ntdll.dll   } Unknown function at RtlDosSearchPath_Ustr + $AEE
[771F6A9B]{ntdll.dll   } Unknown function at RtlDosSearchPath_Ustr + $AAC
[77220AE5]{ntdll.dll   } Unknown function at WinSqmSetIfMaxDWORD + $35
[771F6A3D]{ntdll.dll   } Unknown function at RtlDosSearchPath_Ustr + $A4E
[77220AE5]{ntdll.dll   } Unknown function at WinSqmSetIfMaxDWORD + $35
[6E931AE0]{AcLayers.DLL} Unknown function at NotifyShims + $73B6
[771C010F]{ntdll.dll   } KiUserExceptionDispatcher + $F
[6E931AE0]{AcLayers.DLL} Unknown function at NotifyShims + $73B6
[771E9960]{ntdll.dll   } Unknown function at RtlQueryEnvironmentVariable + $241
[6E8E0000]{AcLayers.DLL}  + $0
[771EA172]{ntdll.dll   } Unknown function at RtlAllocateActivationContextStack + $1CF
[6E8E1FFF]{AcLayers.DLL}  + $0
[6E8E0000]{AcLayers.DLL}  + $0
[768F4AF9]{ole32.dll   } Unknown function at ObjectStublessClient31 + $4AF6
[772B206C]{ntdll.dll   } NlsAnsiCodePage + $205C
[771EA14C]{ntdll.dll   } Unknown function at RtlAllocateActivationContextStack + $1A9
[6E8E1FFF]{AcLayers.DLL}  + $0
[77220AE5]{ntdll.dll   } Unknown function at WinSqmSetIfMaxDWORD + $35
[771E9E5C]{ntdll.dll   } Unknown function at RtlDecodePointer + $F7
[768F4B4D]{ole32.dll   } Unknown function at ObjectStublessClient31 + $4B4A
[77220AE5]{ntdll.dll   } Unknown function at WinSqmSetIfMaxDWORD + $35
[771E9E89]{ntdll.dll   } LdrInitializeThunk + $10
[771B0000]{ntdll.dll   }  + $0
[771B0000]{ntdll.dll   }  + $0
[7720EAB0]{ntdll.dll   } RtlExitUserThread + $0
[771C0190]{ntdll.dll   } RtlUserThreadStart + $0

I searched for "AcLayers.DLL" (because it seems a little bit strange too me) I found an article (http://www.nynaeve.net/?p=62) about Vista compatibility mode and strange crashes... Propably D2007 is not compatible with Win7?

Edit 3: when I run D2007 without compatibility mode (?, just running the exe, not using the pinned item in the taskbar!) I get the same error less frequent and the stack doesn't show AcLayers.DLL anymore, but I can't see what's going wrong then (need some more investigation, don't have more time for that now)

like image 144
André Avatar answered Sep 28 '22 07:09

André