Reload a DLL and _getptd returns zero

Michael Ost most at
Mon Jan 14 17:32:23 CST 2013

On 01/12/2013 05:21 PM, Dan Kegel wrote:
>> The library in question is using static vc runtime linkage, so _getptd()
>> is linked in
> That's somewhat worrisome.  So you have multiple instances
> of the C runtime library active in the same app?
> Maybe you're not unloading that dll gracefully enough.
> Might be heap corruption.  I wonder if Valgrind might be helpful.
> I second the suggestion to post a minimal testcase.

Here's a link to a zip file that includes the prebuilt .exe and .dll 
windows binaries that crash in wine. Plus the code.

So, again, the bug is that MSVCRT calls are failing when called from a 
DLL that has been reloaded. If the calls come from a thread and if the 
DLL is built with static MSVCRT runtimes.

There is no crash for the program in Windows.

I also tried rebuilding the code for winelib, and it doesn't appear to 
have the same behavior. So the problem doesn't happen if Wine's MSVCRT 
is used, only if a windows DLL that uses static MSVCRT linkage is reloaded.

Thanks -- mo

More information about the wine-devel mailing list