Page 1 of 1
AV in MadExcept32.dll
Posted: Mon Aug 06, 2012 8:54 am
by BugDigger
Hi Mathias!
I have a problem with latest version.
CB2007. Nearly empty test VCL application with the only button:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
int* p =(int*)12345;
int w = *p; // try read, invalid access
}
catch(EAccessViolation& e) { ShowMessage("caught in AV"); }
catch (Exception& e) { ShowMessage("caught in Ex"); }
catch(...) { ShowMessage("caught in ..."); }
}
1) run and close the application without pressing button - OK, no problem
2) run. press button (AV and message box as expected). Close application - AV in MadExcept32.dll.
I see no saved bug report, so I send screenshort in attachment.
Re: AV in MadExcept32.dll
Posted: Mon Aug 06, 2012 12:27 pm
by madshi
Hello,
I've tried to reproduce the problem on my PC, but it doesn't occur here. Could you please email your project to me with full source code and your compiled exe file?
Thanks, Mathias.
Re: AV in MadExcept32.dll
Posted: Tue Aug 07, 2012 3:59 am
by BugDigger
See test project in attachment.
Umm... Attachment is downloaded (as I can see in browser's progress bar) but I don't see any visual mark about presence of the attachment...
Re: AV in MadExcept32.dll
Posted: Tue Aug 07, 2012 4:19 am
by BugDigger
madshi wrote:
I've tried to reproduce the problem on my PC, but it doesn't occur here.
BTW, it can be related to the problem (crash after "unoffending" AV) discussed on
https://forums.embarcadero.com/thread.j ... t=0#478749
http://blogs.msdn.com/b/oldnewthing/arc ... 73741.aspx
But initial AV in the test project is on address 12345 which can not be stack guard page.
Re: AV in MadExcept32.dll
Posted: Tue Aug 07, 2012 1:13 pm
by madshi
I don't think it's related to that.
I don't see any attachments, either. Could you please email the project (with compiled exe) to me? madshi (at) gmail (dot) com. Thanks.
Re: AV in MadExcept32.dll
Posted: Wed Aug 08, 2012 2:21 am
by BugDigger
Done. Archive's password is "AVtest" (gmail rejects exe in attachment).
Re: AV in MadExcept32.dll
Posted: Thu Aug 09, 2012 10:26 am
by madshi
Thanks, that was quite helpful. The problem should be fixed in this build:
http://madshi.net/madCollectionBeta.exe (installer 2.7.2.2)
Could you please confirm?
Re: AV in MadExcept32.dll
Posted: Fri Aug 10, 2012 9:09 am
by BugDigger
Hello, Mathias!
Yes, now all work as expected, thank you!
But what do you think about the results? (see attached generated leak report; 2 AV after 2 button click)
1) Expert shows memory leak on every AV in test. Is this really memory leak? What about newer versions of CB?
2) Why report shows call stack from TApplication.ProcessMessage (not my button click procedure)?
Re: AV in MadExcept32.dll
Posted: Fri Aug 10, 2012 9:12 am
by BugDigger
I don't see my attachment again. Here is its contents:
Code: Select all
Project3.exe - 2012-08-10 - 15.55.01 - leak report.mbr
allocation number: 1901
program up time: 2.42 s
type: EAccessViolation
address: $4ec8ff0
size: 16
access rights: read/write
message: EAccessViolation
main thread ($b38):
671c9455 madExcept32.dll madExceptDbg 1442 GetMemCallback
0040726c Project3.exe system 2654 @GetMem
0040840a Project3.exe system 8807 TObject.NewInstance
004935b6 Project3.exe __ClassCreate
00497ea6 Project3.exe Sysutils EAccessViolation.Create
00495d15 Project3.exe Controls TWinControl.GetDeviceContext
0040ea77 Project3.exe madExcept _16526
00498452 Project3.exe ____ExceptionHandler
0049fc5d Project3.exe Sysutils @__InitExceptBlockLDTC
7c90e485 ntdll.dll KiUserExceptionDispatcher
004751fc Project3.exe Controls 5229 TControl.Click
004956e2 Project3.exe stdctrls 3745 TButton.Click
004957e0 Project3.exe stdctrls 3797 TButton.CNCommand
00474cf7 Project3.exe Controls 5146 TControl.WndProc
00478cef Project3.exe Controls 7304 TWinControl.WndProc
0049558c Project3.exe stdctrls 3684 TButtonControl.WndProc
00474984 Project3.exe Controls 5021 TControl.Perform
00478e3f Project3.exe Controls 7353 DoControlMsg
00479837 Project3.exe Controls 7616 TWinControl.WMCommand
0048a588 Project3.exe forms 5016 TCustomForm.WMCommand
00474cf7 Project3.exe Controls 5146 TControl.WndProc
00478cef Project3.exe Controls 7304 TWinControl.WndProc
00487677 Project3.exe forms 3512 TCustomForm.WndProc
00478418 Project3.exe Controls 7073 TWinControl.MainWndProc
0046d4c0 Project3.exe Classes 11583 StdWndProc
7c90e470 ntdll.dll KiUserCallbackDispatcher
7e3792de USER32.dll SendMessageW
7e37a993 USER32.dll CallWindowProcA
00478deb Project3.exe Controls 7334 TWinControl.DefaultHandler
00478cef Project3.exe Controls 7304 TWinControl.WndProc
0049558c Project3.exe stdctrls 3684 TButtonControl.WndProc
0046d4c0 Project3.exe Classes 11583 StdWndProc
7e3696c2 USER32.dll DispatchMessageA
0048f3f4 Project3.exe forms 8105 TApplication.ProcessMessage
memory dump:
04ec8ff0 d0 97 49 00 ec af ec 04 - 00 00 00 00 00 00 00 00 ..I.............
allocation number: 1996
program up time: 6.77 s
type: EAccessViolation
address: $5758ff0
size: 16
access rights: read/write
message: EAccessViolation
main thread ($b38):
671c9455 madExcept32.dll madExceptDbg 1442 GetMemCallback
0040726c Project3.exe system 2654 @GetMem
0040840a Project3.exe system 8807 TObject.NewInstance
004935b6 Project3.exe __ClassCreate
00497ea6 Project3.exe Sysutils EAccessViolation.Create
00495d15 Project3.exe Controls TWinControl.GetDeviceContext
0040ea77 Project3.exe madExcept _16526
00498452 Project3.exe ____ExceptionHandler
0049fc5d Project3.exe Sysutils @__InitExceptBlockLDTC
7c90e485 ntdll.dll KiUserExceptionDispatcher
004751fc Project3.exe Controls 5229 TControl.Click
004956e2 Project3.exe stdctrls 3745 TButton.Click
004957e0 Project3.exe stdctrls 3797 TButton.CNCommand
00474cf7 Project3.exe Controls 5146 TControl.WndProc
00478cef Project3.exe Controls 7304 TWinControl.WndProc
0049558c Project3.exe stdctrls 3684 TButtonControl.WndProc
00474984 Project3.exe Controls 5021 TControl.Perform
00478e3f Project3.exe Controls 7353 DoControlMsg
00479837 Project3.exe Controls 7616 TWinControl.WMCommand
0048a588 Project3.exe forms 5016 TCustomForm.WMCommand
00474cf7 Project3.exe Controls 5146 TControl.WndProc
00478cef Project3.exe Controls 7304 TWinControl.WndProc
00487677 Project3.exe forms 3512 TCustomForm.WndProc
00478418 Project3.exe Controls 7073 TWinControl.MainWndProc
0046d4c0 Project3.exe Classes 11583 StdWndProc
7c90e470 ntdll.dll KiUserCallbackDispatcher
7e3792de USER32.dll SendMessageW
7e37a993 USER32.dll CallWindowProcA
00478deb Project3.exe Controls 7334 TWinControl.DefaultHandler
00478cef Project3.exe Controls 7304 TWinControl.WndProc
0049558c Project3.exe stdctrls 3684 TButtonControl.WndProc
0046d4c0 Project3.exe Classes 11583 StdWndProc
7e3696c2 USER32.dll DispatchMessageA
0048f3f4 Project3.exe forms 8105 TApplication.ProcessMessage
memory dump:
05758ff0 d0 97 49 00 ec af 75 05 - 00 00 00 00 00 00 00 00 ..I...u.........
Re: AV in MadExcept32.dll
Posted: Fri Aug 10, 2012 1:18 pm
by madshi
It appears to be a real memory leak. I don't know why BCB doesn't properly release the exception object. Probably a bug in the RTL.
When an exception occurs in BCB, there's a lot of damage being done to the stack. In Delphi that's quite different. Stack tracing involves a lot of guessing (at least in x86 processes), as a result it can happen that there are missing or too many stack items in a callstack. With BCB, the danger is even higher than with Delphi.
Re: AV in MadExcept32.dll
Posted: Sat Aug 11, 2012 7:54 am
by BugDigger
Many thanks for information.
Could you please check this memory leak in XE2 (I have not this version of studio)?
If the problem still exists in the latest version it would be nice to file QC report on it to have a chance for fix in the next version.
Re: AV in MadExcept32.dll
Posted: Mon Aug 13, 2012 8:43 am
by madshi
Just checked. The leak seems to be fixed in BCB 2009 (and all newer versions).
Re: AV in MadExcept32.dll
Posted: Mon Aug 13, 2012 9:48 am
by BugDigger
OK, thank you for information.