Windows DLLs and TLS

Paulo Pinto pjmlp at progtools.org
Mon Oct 8 08:34:12 PDT 2012


On Monday, 8 October 2012 at 12:00:00 UTC, Jakob Ovrum wrote:
> On Monday, 8 October 2012 at 11:55:24 UTC, Paulo Pinto wrote:
>> On Monday, 8 October 2012 at 11:44:28 UTC, Jakob Ovrum wrote:
>>> I have a bug in one of my programs that I find particularly 
>>> hard to reduce.
>>>
>>> I am writing a Windows DLL plugin for the IRC chat client 
>>> HexChat (aka XChat). Problem is, all TLS variables, 
>>> regardless of type, appear to be initialized to complete 
>>> rubbish values. Reading them does not cause an access 
>>> violation or anything, but the initial values are garbage. I 
>>> am initializing the runtime using the helpers found in 
>>> core.sys.windows.dll [1].
>>>
>>> I wrote a dummy host application in C mimicking the loading 
>>> behaviour of HexChat - the TLS variables are initialized 
>>> correctly in this case, even though the DLL file is exactly 
>>> the same.
>>>
>>> What is it that a host application can do to break the TLS of 
>>> a D plugin it loads?
>>>
>>> [1] http://pastebin.com/rg9uUQMe
>>
>> Did you already went through this howto?
>>
>> http://dlang.org/dll.html
>
> Of course. I've written many DLLs before, and again, TLS works 
> in the exact same DLL when a different host program is used, 
> hence why it's so difficult to reduce.
>
> Besides, there's nothing relevant in that article.

Sorry, just thought it might be helpful.



More information about the Digitalmars-d mailing list