LoadLibrary error 487 (was Re: Please test latest developer snapshot)

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Mon Feb 28 00:57:00 GMT 2011

On Sun, Feb 27, 2011 at 10:37:03PM +0100, Corinna Vinschen wrote:
>On Feb 27 12:05, Christopher Faylor wrote:
>> On Sun, Feb 27, 2011 at 10:46:27AM +0100, Corinna Vinschen wrote:
>> >Thanks, but your code only works on XP, not on Winodws 7.  In fact,
>> >on Windows 7 Cygwin is now entirly broken since every single fork
>> >segfaults.
>> It works for me.  I had tested it on Windows 7.  My simple test case was
>> just using ssh which always seemed to break when I got the code wrong.
>> It works fine on Windows 7.  The crash reported on the mailing list also
>> worked with my changes on Windows 7 and Windows XP.
>That's weird.  It doesn't work for me.  As soon as winmm is loaded with
>the DONT_RESOLVE_DLL_REFERENCES flag on Windows 7, my shell becomes
>unusable.  The shell itself runs, but every single try to start another
>application (including the stuff in startup scripts) fails with a SEGV,
>sometimes with, sometimes without creating a stackdump.
>Maybe that's because I'm running tcsh.  Probably tcsh does something at
>every fork which triggers loading the winmm multimedia timer functions,
>while bash doesn't.

Ok, this change is making me pretty nervous if it is that picky.  It
shows no problems at all when running bash.  And, I tried it on NT4,
Windows 7, Windows XP, and Windows 2008.

(Windows 2003 is giving me headaches right now.  It is apparently
pouting because I haven't run it in so long.)

Since it is so sensitive, wouldn't it be safer to just add libwinmm.a to
DLL_IMPORTS in Makefile.in and forget about trying to stand on our heads
to make this work right when loaded dynamically?

I just tried this and it seems to work fine.

I think what I'd like to do is back out most of what we did in the last
48 hours and just opt for the simple approach.  I have that change
sitting in my sandbox.  It keeps the dll_load() function and eliminates
the unused 'fn' (since, as you noted, it wouldn't have worked right
anyway).  All of the functions from libwinmm.a are now resolved at DLL
load time, directly.


More information about the Cygwin-developers mailing list