This is the mail archive of the
mailing list for the Cygwin project.
Re: dlopen() bug (new testcase)
- From: Bernhard Loos <bernloos at web dot de>
- To: cygwin at cygwin dot com
- Date: Thu, 30 Mar 2006 01:10:56 +0200
- Subject: Re: dlopen() bug (new testcase)
I looked at the problem again this week, but unfortunately I'm unable to debug anything happening after the first SIGSEGV.
I inserted a view OutputDebugString()-calls and got those results:
00:00:00.703: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") called from "CYGWIN1.DLL" at address 0x6100FE42 by thread 1.
00:00:00.718: Loaded "CRASHTEST.DLL" at address 0x003F0000 by thread 1. Successfully hooked module.
00:00:00.718: DllMain(0x003F0000, DLL_PROCESS_ATTACH, 0x00000000) in "CRASHTEST.DLL" called by thread 1.
00:00:00.718: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x610B2DE2 by thread 1.
00:00:00.718: Unloaded "CRASHTEST.DLL" at address 0x003F0000 by thread 1.
00:00:00.718: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") returned NULL by thread 1. Error: Unzulssiger Zugriff auf einen Speicherbereich (998).
00:00:00.781: First chance exception 0xC0000005 (Access Violation) occurred at address 0x003F101A by thread 1.
00:00:00.781: First chance exception 0xC0000005 (Access Violation) occurred at address 0x40000060 by thread 1.
00:00:00.781: First chance exception 0xC0000029 (Unknown) occurred in "NTDLL.DLL" at address 0x7C95EB28 by thread 1.
It looks, like Windows unloads the DLL after the first exception even before the myfault-exception handler is able to catch it.
So return_from_fault() tries to longjmp to code wich isn't present any more an the second exception occurs.
To fix this problem, I would suggest to use the IsBadReadPtr()-function instead of the myfault-exception handler to check the pointer in
I could write a patch, if nobody has any objections.
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html