http://bugs.winehq.org/show_bug.cgi?id=31910
Bug #: 31910 Summary: KiUserExceptionDispatcher stub crashes Battleye > 1.176 Product: Wine Version: 1.5.14 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: mgg+winehqbugzilla@nobodymuch.org Classification: Unclassified
Created attachment 42011 --> http://bugs.winehq.org/attachment.cgi?id=42011 Backtrace of crash on 1.5.13 (can create later ones if needed)
DayZ on Arma2 ran well (with graphical glitches) until ~1/Oct/2012, when a new release (1.176) of the anti-cheat software Battleye (http://battleye.com/) came out. Previously, Battleye ran perfectly under wine. Apparently, this new version hooks into the scripting engine functions of Arma2 to monitor for illegitimate use of script calls. This hooking appears to be implemented by the insertion of breakpoints/exceptions.
I contacted Battleye about this and related issues, and Bastian Suter was kind enough to reply with: "yes, this problem is related to new BE features and I'm afraid I can't do anything about it when it comes to Wine. Maybe you could report this as a bug/problem to the Wine devs? Let them know that the KiUserExceptionDispatcher function is not called in Wine when exceptions happen, which it is on Windows."
I've confirmed that this function is a stub according to the documentation at http://source.winehq.org/WineAPI/ntdll.html
Reproduction steps: 0. Get a running version of DayZ on Wine (see AppDB) - http://appdb.winehq.org/objectManager.php?sClass=version&iId=26387&i... 1. connect to a server with BE enabled (non-BE servers work fine, confirming this is related to BE) 2. (optional) wait in the lobby for BE to reply with the GUUID message, indicating BE is fully initialised and the engine is hooked 3. join the game 4. at 80% on the loading bar, presumably when the first scripts run, arma2 crashes with "wine: Unhandled exception 0x80000003 at address 0x6b88dd (thread 0009), starting debugger..." on the instruction "0x006b88dd: int $3" (breakpoint)
Presumably, this crash occurs because BE's exception handler is not being called when the exception occurs.
Tested versions: - wine 1.5.9+raw - 1.5.14 - Battleye 1.176 - 1.179 - Arma2 1.62.97771, DayZ 1.7.2.6
Impact: Arma2 and DayZ just reached runnable status in 1.5.13 with the inclusion of the raw input patches (runnable previously by building these patches in). This issue prevents playing on BE-enabled servers (probably >95% of servers). Other Battleye games are certain to be affected, if they run on wine. Battleye prior to 1.176 was working fine, but this is a new BE development so cannot be counted as a regression.