D hates to be dynamic linked

Rainer Schuetze r.sagitario at gmx.de
Wed Mar 10 01:38:10 PST 2010


Don wrote:
> Rainer Schuetze wrote:
>> I knew that blog, but I expected to find the necessary data somewhere 
>> in the "undocumented" (but still available) structures.
>>
>> But I had to dig a little deeper into ntdll myself and came up with a 
>> patch that is part of the multithread-support for DLLs:
>>
>> http://d.puremagic.com/issues/show_bug.cgi?id=3885
>>
>> It emulates the behaviour at process startup time, and modifies the 
>> data structures so that windows handles the DLL as if it was loaded 
>> with the process. This has the nice benefit that you don't need to 
>> handle the creation of new threads.
>>
>> The downsides are:
>> - DLL-unload is disabled, but I think unloading a DLL that uses TLS is 
>> problematic anyway)
>> - It will leak some pointer-arrays in favor of not causing crashes due 
>> to other threads using TLS at same time as reallocating these arrays.
>>
>> As XP is not a fast moving target anymore, I hope that ntdll will not 
>> change a lot, so it will not need adjustment for every windows-update. 
>> I've checked SP2 and SP3, which look very much the same with respect 
>> to TLS implementation.
>>
>> Rainer
> 
> You're totally awesome. This is a game-changer.

Thanks :-) The patch might still need a little polishing before finding 
it's way into druntime, though...




More information about the Digitalmars-d mailing list