
"Sigbjorn" == Sigbjorn Finne
writes:
Sigbjorn> That's the system trap interrupt (i.e., transition to Sigbjorn> ring 0 / kernel mode to perform a system call/service.) Thanks! I've learned more about Windows and DLLs in a few days than I ever expected or wanted to. The problem appears to be related to http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b153867 and http://support.microsoft.com/default.aspx?scid=kb%3bEN-US%3b142243 int 0x2e is (presumably) an attempt to attach to the (my) DLL. DllMain is (by design) not reentrant. An attempt to create a thread from DllMain would attach to the DLL, calling DllMain with a reason of DLL_THREAD_ATTACH. This latter call will hang until the original call returns (which will never happen, now). timeSetEvent creates a new thread; and the callback is in the same DLL as the call to startupHaskell. The workaround appears to be to not put code that might possibly create a new thread (that needs the DLL) in DllMain; instead such code should go in an initialization function that is called after DllMain returns. I'll test it out and post code that corrects the example from the User's Guide. -- Kevin S. Millikin Architecture Technology Corporation Research Scientist Specialists in Computer Architecture (952)829-5864 x. 162 http://www.atcorp.com