http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #8 from Night Nord NightNord@gmail.com 2012-09-12 13:20:28 CDT --- Created attachment 41658 --> http://bugs.winehq.org/attachment.cgi?id=41658 Workaround patch, commenting out problematic function
Ok, thanks to mighty printf, I finally located it down to one internal function: read_directory_getdents
If it's commented, wine will use POSIX readdir and everything will work just fine.
Complete "crash-chain" is FindFirstFileA -> FindFirstFileExA -> FindFistFileExW -> NtQueryDirectoryFile -> read_directory_getdents -> append_entry
Problem is: 1) Game will crash if append_entry from read_directory_getdents entered, in any case, even if no game-supplied data would be ever touched (I've installed strcmp-protected guard, bailing out at various points). 2) AFAIK, there is no game supplied data at this point and append_entry seems to be fine 3) If bail-out point installed at append_entry very end, it will crash anyway.
My best guess is that we are running into some thread stack size problem - read_directory_getdents seems to be somewhat heavier that read_directory_readdir.
But I don't know how to check it out.