Can't find windows' CreateThread function / concurrency.spawn crashes host application

Rainer Schuetze via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jan 2 08:42:46 PST 2016



On 02.01.2016 16:34, alkololl wrote:
> On Saturday, 2 January 2016 at 01:44:46 UTC, Adam D. Ruppe wrote:
>> On Saturday, 2 January 2016 at 00:32:20 UTC, alkololl wrote:
>>>  Why is that?
>>
>> I'm not sure, but in the switch you posted, you didn't handle the
>> DLL_THREAD_ATTACH and DLL_THREAD_DETACH cases, the runtime might be
>> incrementing the refcount there.
>>
>> Check this out:
>> http://wiki.dlang.org/Win32_DLLs_in_D
>
> Thanks for your reply. I replaced my switch statement with the one
> behind the link you left but the result (no result) stays the same. The
> Dll doesn't get unloaded. Not until I close the host application.

D needs "implicite thread local storage" to implement thread local 
variables, but Windows XP and earlier versions do not support this for 
DLLs dynamically loaded through LoadLibrary. The D runtime implements 
the part necessary for loading, but does not support unloading. As a 
consequence it sets the DLL to never unload.

If you are actually running XP, you can check 
https://github.com/denis-sh/hooking. IIRC Denis Shelomovskij implemented 
the missing parts.


More information about the Digitalmars-d-learn mailing list