Mail Archives: cygwin/2006/03/22/00:46:13
On Wed, 2006-03-22 at 03:35 +0100, Bernhard Loos wrote:
> If the C++library declares its calls as 'extern "C"' (as it is done in the example),
> AFAIK there shouldn't be any problem.
Doesn't matter what you think you know -- it's not a permitted thing
to do, you never know what implementors are going to change.
> Anyway all this things aren't really related to the crash.
> I removed as much things as possible from the testcase and corrected
> the things mentioned above.
Good. So now you've eliminated some possible causes of the
problem. Now it looks weird. A do nothing program is calling
dlopen() and dying for no reason.
> But I wasn't able to find a solution or even an explaination.
>
> This is a part of the log from depency walker:
> 00:00:00.438: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") called from "CYGWIN1.DLL" at address 0x6100FCB2 by thread 1.
> 00:00:00.500: Loaded "CRASHTEST.DLL" at address 0x00B40000 by thread 1. Successfully hooked module.
> 00:00:00.500: DllMain(0x00B40000, DLL_PROCESS_ATTACH, 0x00000000) in "CRASHTEST.DLL" called by thread 1.
> 00:00:00.500: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x610AE938 by thread 1.
> 00:00:00.500: Unloaded "CRASHTEST.DLL" at address 0x00B40000 by thread 1.
> 00:00:00.516: LoadLibraryA("H:\cygwin\test\CrashTest\CrashTest.dll") returned NULL by thread 1. Error: Unzulssiger Zugriff auf einen Speicherbereich (998).
> 00:00:00.578: First chance exception 0xC0000005 (Access Violation) occurred at address 0x00B4F37E by thread 1.
> 00:00:00.578: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x6108DFFC by thread 1.
> 00:00:00.578: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x6108DFFC by thread 1.
> 00:00:00.578: First chance exception 0xC0000005 (Access Violation) occurred in "CYGWIN1.DLL" at address 0x6108DFFC by thread 1.
Ouch. Hmm. But the code isn't doing anything!
This does look weird -- my system is doing what you're doing
all the time. It was crashing badly for ages until someone pointed
out there was a bug in libstdc++ handling string crossing
DLL boundaries. Since I fixed that the code works fine.
Perhaps you can try to build it, get Release Candidate 6
from:
http://felix.sf.net/
You'll need to install Ocaml and Python before it will work.
It does 100 or so triangle linkages like
MAIN --loadtime-- > RTL
\ ^
\ /
dlopen loadtime
\ /
V /
USER LIB
all C++ calling C++, works on two different Cygwins,
one running on XP32 and the other on XP64.
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -