http://bugs.winehq.org/show_bug.cgi?id=20026
Summary: Metal Fatigue crashes when I attempt to change skirmish map Product: Wine Version: 1.1.29 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: nmatra@citromail.hu
Created an attachment (id=23568) --> (http://bugs.winehq.org/attachment.cgi?id=23568) Backtrace from Wine 1.0.1
In newer Wine versions I can't get back traces, because Wine hags with a system error dialog(the send or don't send error report one if under Windows). I can't click anywhere so I have to kill the process and I won't get the back trace.
However, I know this issue is very old so I installed a Wine (1.0.1) which didn't have that error dialog yet. Now it simply crashes, but I get back trace...
Clicking to change the map will immediately make an unhandled exception and the debugger will start.
The Demo do not have any skirmish maps.
http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #1 from Jeff Zaroyko jeffz@jeffz.name 2009-09-13 04:45:20 --- http://wiki.winehq.org/Backtraces
http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #2 from Vincent Povirk madewokherd@gmail.com 2011-03-02 10:35:30 CST --- Can you get a relay,seh,tid log of the crash, preferably from recent Wine?
http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #3 from Alan A. grsfdhj@tiscali.it 2011-04-01 03:53:46 CDT --- Created an attachment (id=33885) --> (http://bugs.winehq.org/attachment.cgi?id=33885) wine-1.3.16 backtrace log with seh,tid
I tried getting a relay log, but that slows down the game to the point that I can't move anymore the mouse cursor to select "Skirmish" in the main menu. If relay is mandatory, though, I'll try on a faster machine...
http://bugs.winehq.org/show_bug.cgi?id=20026
eugennc eugennc@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #4 from eugennc eugennc@gmail.com 2011-06-26 06:08:38 CDT --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=20026
eugennc eugennc@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eugennc@gmail.com
--- Comment #5 from eugennc eugennc@gmail.com 2011-06-26 06:13:43 CDT --- A similar crash (by, possibly, the same cause) happens when loading saved games. Saving games works OK, entering the load menu without any saved game as well, but entering the Load Menu with a (or a few) saved games causes the game to crash. This difference in behaviour _might_ point out to a directory/file access or read bug.
http://bugs.winehq.org/show_bug.cgi?id=20026
Night Nord NightNord@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |NightNord@gmail.com
--- Comment #6 from Night Nord NightNord@gmail.com 2012-09-06 14:03:47 CDT --- Still an issue on wine-1.5.9
Log with relay could not be retrieved, as WINEDEBUG=relay crashes the game on point much earlier.
It definitly works under Windows XP virtual machine, but do not work under wine under any configuration.
There is a demo: [1] (or just google Metal Fatigue demo, it's available on plenty of sites) To launch it you'll need to install nGlide wrapper [2], no additional configuration needed.
Demo also suffers from this issue, as well.
[1] http://www.fileplanet.com/38396/30000/fileinfo/Metal-Fatigue-Demo [2] http://www.zeus-software.com/downloads/nglide
Quick testcase: 1. install nGlide 2. Install MF Demo (in C:\MFDemo, for example) 3. Enter C:\MFDemo 4. rm -Rf Save 5. Launch MFatigue.exe 6. Press "Load Game" (it works, no saved games) 7. Press new compaing, select first, press start. 8. Press "Save Game" (it works, enter some name) 9. Press "Load Game" or "Save Game" (it crashes)
Log (+all,-relay,-dsound) shows last lines prior to crash is wildcarding "C:\MF\TBD\..\SAVE\*", it runs NtQueryDirectoryFile and outputs all contents. If there is no Save folder, than query isn't run.
So, my best quess is that there is some difference between NtQueryDirectoryFile results on Windows machine and under wine, due to some memory corruption signs - maybe some buffer size difference.
I've tried to run few tests, even made a simple NtQueryDirectoryFile test program to run under MinGW and winegcc, but my knowledge of Windows programming is really poor, so no results here.
http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #7 from Night Nord NightNord@gmail.com 2012-09-06 14:05:50 CDT --- Also, I suggest changing this bug's summary to "Metal Fatigue crashes on file enumeration (Game saves, skirmish maps)" as that's obviously what's happening out there. Could someone also set URL tag to demo?
http://bugs.winehq.org/show_bug.cgi?id=20026
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |http://www.fileplanet.com/3 | |8396/30000/fileinfo/Metal-F | |atigue-Demo Summary|Metal Fatigue crashes when |Metal Fatigue crashes on |I attempt to change |file enumeration (Game |skirmish map |saves, skirmish maps)
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.
http://bugs.winehq.org/show_bug.cgi?id=20026
--- Comment #9 from Night Nord NightNord@gmail.com 2012-09-12 13:25:37 CDT --- Just a slight note - compiling with optimization beyond -O0 will slightly move death-point (i.e. function call after which game data became corrupted) further into append_entry (it will fail after ntdll_umbstowcs call), so it's maybe just another evidence of stack overflow.
http://bugs.winehq.org/show_bug.cgi?id=20026
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |adys.wh@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=20026
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Abandoned?
--- Comment #10 from Ken Sharp imwellcushtymelike@gmail.com --- Is this still an issue in Wine 1.7.45 or later?
https://bugs.winehq.org/show_bug.cgi?id=20026
1Samildanach layerof@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |layerof@gmail.com
--- Comment #11 from 1Samildanach layerof@gmail.com --- (In reply to Ken Sharp from comment #10)
Is this still an issue in Wine 1.7.45 or later?
Using 1.7.51 in my general prefix, I get a crash in the same way (on selecting "load" from the main menu, or changing a map for Skirmish). Same with using a clean PlayOnLinux prefix with either *51 or *45.
Arch, i686 (with 64bit kernel), full version of the game (with crack).
https://bugs.winehq.org/show_bug.cgi?id=20026
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
--- Comment #12 from winetest@luukku.com --- On my short testing I was unable to replicate the issue. I didnt any crashes no matter what I did.
wine-1.9.23-56-gbfa0e4b
https://bugs.winehq.org/show_bug.cgi?id=20026
Nándor nmatra@citromail.hu changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #13 from Nándor nmatra@citromail.hu --- Hey!
Great news, I tested selecting other skirmish maps, saving & loading campaign missions and they all work now. I don't know which commit fixed it and I only tested on 2.0-rc4. I assume newer will work as well. Thx
https://bugs.winehq.org/show_bug.cgi?id=20026
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #14 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 2.1.