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