[OT] Re: Windows DLLs and TLS

Denis Shelomovskij verylonglogin.reg at gmail.com
Tue Oct 9 09:59:56 PDT 2012


09.10.2012 0:51, Rainer Schuetze пишет:
>
>
> On 10/8/2012 8:13 PM, Denis Shelomovskij wrote:
>> 08.10.2012 21:47, Rainer Schuetze пишет:
>>> Implicite TLS for dynamically loaded DLLs is
>>> not supported by XP or Sever 2003, so druntime contains a fix to
>>> simulate it. (The workaround has the drawback that the DLL cannot be
>>> unloaded anymore.)
>>>
>>> I'm just speculating, maybe something goes wrong with the tls_index
>>> variable, reading TLS variables would then access data from another DLL.
>>>
>>> Is your code doing callbacks into the host application in static
>>> initializers? With the XP workaround, the runtime initialization
>>> "impersonates" all threads that exist before loading the DLL, by
>>> switching the TLS-pointer array of the current thread, and that might be
>>> unexpected in a callback (but not doing this might produce even more
>>> unexpected results).
>>
>> Here you are! Just want to mention that I'm currently managed to publish
>> my (continuation of your) TLS fix I did half a year before. It will
>> finally solve this XP/Sever 2003 problem. It is available here but isn't
>> finished now (fill be in few days):
>> https://github.com/denis-sh/hooking/tree/master/tlsfixer
>
> Will this fix both issues (not being able to unload and that imperfect
> simulation of DLL_THREAD_ATTACH for existing threads)? That would be
> very cool.
>

Unloading is fixed. I can't remember any problems with DLL_THREAD_ATTACH 
(but it was half year ago so I can miss something I did that time), can 
you concretize the problem?

And it isn't related to D and D runtime (D is just an implementation 
language). It is assumed to fix everything launched on the system 
without administrator rights requirement (for office workers).

>>
>> I hope you aren't against it is based on your work?
>>
>
> Sure, no problem. It's boost licensed, isn't it? ;-)
>

Yes it is. But thanks anyway.

-- 
Денис В. Шеломовский
Denis V. Shelomovskij


More information about the Digitalmars-d mailing list