This is the mail archive of the
mailing list for the Cygwin project.
Re: bug report - DLL failure on win ME with gcc-3
- From: Christopher Faylor <cgf at redhat dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 28 Feb 2003 15:46:27 -0500
- Subject: Re: bug report - DLL failure on win ME with gcc-3
- References: <email@example.com>
- Reply-to: cygwin at cygwin dot com
On Fri, Feb 28, 2003 at 01:34:04PM +0000, Steven O'Brien wrote:
>I think I've found the problem with dlopen()/fork() on Win ME as
>If I'm right, it also applies to win 95/98.
>in dll_init.cc: (dll_list::load_after_fork) a call is made to
>LoadLibraryEx (d.name, NULL, DONT_RESOLVE_DLL_REFERENCES);
>According to the MSDN library, at
>the symbol DONT_RESOLVE_DLL_REFERENCES is not supported on win 9x/Me. It
>does not say what the result of using this value on those platforms is.
>I suspect that this breaks the LoadLibraryEx call, so that the
>subsequent FreeLibrary call ends up deallocating memory that was never
>allocated, hence the crash.
>I have tried a patched version of dll_init.cc that uses plain
>LoadLibrary instead of LoadLibraryEx on win 9x/Me, and with this patched
>cygwin1.dll my test program runs correctly on all platforms. I have
>attached the patch (cvs diff -up dll_init.cc). Could someone please
>review this patch and apply it if it is acceptable?
I've looked at the patch. I don't exactly understand why it's
necessary, though. If it was necessary, you'd think that we'd have a
number of people complaining that dynamically linked DLLs don't work on
FWIW, the patch bypasses cygwin conventions by checking for version number
in the middle of a function. See the wincap functionality for how this
is supposed to be handled.
I wonder if just a simple test for NULL being returned from
LoadLibraryEx is all that is required.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html