This is the mail archive of the
pthreads-win32@sourceware.cygnus.com
mailing list for the pthreas-win32 project.
RE: invalid page fault when using LoadLibrary/FreeLibrary
- To: 'Todd Owen' <towen at lucidcalm dot dropbear dot id dot au>, pthreads-win32 at sourceware dot cygnus dot com
- Subject: RE: invalid page fault when using LoadLibrary/FreeLibrary
- From: "Bossom, John" <John dot Bossom at Cognos dot COM>
- Date: Tue, 9 Nov 1999 08:29:08 -0500
Why are you dynamically loading and freeing the library?
You are circumventing the functionality of the library by
doing so. This PThreads implementation relies on the
functionality of DllMain. The hooks for thread cleanup, etc
are through leveraging this function. By calling FreeLibrary,
you are invalidating this functionality.
John.
-----Original Message-----
From: Todd Owen [mailto:towen@lucidcalm.dropbear.id.au]
Sent: Saturday, November 06, 1999 1:31 PM
To: pthreads-win32@sourceware.cygnus.com
Subject: invalid page fault when using LoadLibrary/FreeLibrary
hi,
for me, pthread.dll consistently causes an "invalid page fault in
kernel32.dll" when I load it "explicitly"...to be precise, loading (with
LoadLibrary) isn't a problem, it gives the error when I call FreeLibrary.
I guess that the dll's cleanup must be causing the error.
Implicit linkage of the dll has never given me this problem. Here's a
program (console application) that gives me the error:
#include <windows.h>
int main() {
HINSTANCE hinst;
hinst = LoadLibrary("pthread");
printf("hinst == %d\n", hinst);
printf("press a key to keel over...\n");
getch();
FreeLibrary(hinst);
return 0;
}
I compile with: mingw32 (gcc-2.95 release), with the MSVCRT add-on (not
that the compiler should make much difference in this case).
PTHREAD.DLL: is the precompiled 1999-11-02 one (I tried an older one as
well, with the same result).
Fascinatingly, if you have your own dll (mycode.dll) which implicitly
loads pthread.dll, and then do LoadLibrary/FreeLibrary on _this_ dll, the
same thing happens.
Sorry, but I have no idea how to fix the problem. It's taken me long
enough to track it down this far.
Todd.