From: David D. <dav...@rs...> - 2005-07-15 04:09:48
|
Hello! (sorry this might appear twice as I sent off of my other email address) I've found the problem. When using -mthreads if you throw an exception between a DLL and an EXE with the dll loaded via LoadLibrary, and then unload the DLL via FreeLibrary the program will crash on exit when mthr.c is trying to clean up after the unloaded DLL. Attached is a test case that could probably be shrunk a little more, but one that causes the problem. ( Attachment didnt work, so it's hosted at http://dev.rsaisp.com/files/userprob.zip ) Without hooking into the FreeLibrary API, how do you propose this gets fixed? You could check to see if the address is still good I guess. - Dave ----- Original Message ----- >>>> From: "Danny Smith" <dan...@cl...> >>>> To: <min...@li...> >>>> Sent: Wednesday, July 13, 2005 3:53 AM >>>> Subject: Re: [Mingw-users] __mingwthr_run_key_dtors crash on exit >>>> >>>> >>>>> From: "David Daeschler" >>>>> >>>>>> As you can see, keyp->dtor appears to be invalid. However, I do not >>>>>> know >>>>> where this variable comes from. > It appears that these objects are >>>>> created and >>>>> destroyed to track something with threads, but I do not know >>>>>> what could cause one to be prematurely deleted (or added invalidly) >>>>>> as >>>>>> it >>>>> would appear is happening. >>>>>> >>>>>> When I look at the source files for the runtime if I comment out the >>>>>> line >>>>>> that >>>>> runs the dtors for when the >>>>>> PROCESS TERMINATES ONLY (not the thread ones) it does not crash, and >>>>>> since the >>>>> process is ending it's > not really a memory leak.. I don't like this >>>>> solution >>>>> though because it means I am doing something bad, or >>>>>> there is a bug. Example below... >>>>>> >>>>>> case DLL_PROCESS_DETACH: >>>>>> __mingwthr_run_key_dtors(); //comment this line >>>>>> DeleteCriticalSection (&__mingwthr_cs); >>>>>> break; >>>>> >>>>> Actually, that line was not always there. Here is the discussion >>>>> about >>>>> the >>>>> patch that added it: >>>>> http://sourceforge.net/mailarchive/message.php?msg_id=600806 >>>>> >>>>> It would be very useful if you could provide a reasonable size >>>>> testcase. >>>>> >>>>> I'm wondering if your problem is exposing a latent bug in the code >>>>> that >>>>> allows >>>>> EH across dll/exe boundaries. >>>>> >>>>> Danny >>>>> >>>>> >>>>> >>>>> ------------------------------------------------------- >>>>> This SF.Net email is sponsored by the 'Do More With Dual!' webinar >>>>> happening >>>>> July 14 at 8am PDT/11am EDT. We invite you to explore the latest in >>>>> dual >>>>> core and dual graphics technology at this free one hour event hosted >>>>> by >>>>> HP, >>>>> AMD, and NVIDIA. To register visit http://www.hp.com/go/dualwebinar >>>>> _______________________________________________ >>>>> MinGW-users mailing list >>>>> Min...@li... >>>>> >>>>> You may change your MinGW Account Options or unsubscribe at: >>>>> https://lists.sourceforge.net/lists/listinfo/mingw-users >>>>> >>>> >>> >> > |