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.

https://dl.dropbox.com/u/97386125/msvcrt-dll-problem.zip

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


Reply via email to