https://bugs.winehq.org/show_bug.cgi?id=39648
Bug ID: 39648 Summary: MTA: San Andreas cannot start in Wine64 Product: Wine Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntoskrnl Assignee: wine-bugs@winehq.org Reporter: rafalh1992@o2.pl Distribution: ---
Created attachment 52850 --> https://bugs.winehq.org/attachment.cgi?id=52850 Log (+ntoskrnl)
Multi Theft Auto: San Andreas 1.5 cannot start in Wine64 (WoW64 mode) in Linux Mint 17.1. Wine stops logging with error "wine client error:37: partial write 57344".
I already debugged this issue. MTA: SA is multiplayer mod for GTA: San Andreas. MTA contains kernel mode driver named FairplayKD.sys. MTA installs it at startup and then sends IOCTL to it from modded gta_sa.exe process. When driver tries to process IOCTL it fails and sets ipr->IoStatus.Status to STATUS_NOT_IMPLEMENTED. But when Wine interprets IRP structure in ntoskrnl it reads the status as number of bytes (which is normally passed in IoStatus.Information field). Then Wine tries to transfer 0xC0000002 (STATUS_NOT_IMPLEMENTED) bytes to gta_sa.exe process (process which sent IOCTL). This obliviously fails and causes "wine client error:37".
Problem is caused by invalid definition of IRP structure in wdk.h header. Its improperly marked as packed. It does nothing in 32-bit because structure doesn't need any padding in such architecture. In 64-bit it causes displacement of Status field by 4 bytes.
I already created patch for this issue and going to send it. Patched Wine 1.7.53 allows me to start MTA and play normally. Newer Wine has regression in DirectX which makes MTA unplayable.
https://bugs.winehq.org/show_bug.cgi?id=39648
--- Comment #1 from rafalh rafalh1992@o2.pl --- https://source.winehq.org/patches/data/116849
https://bugs.winehq.org/show_bug.cgi?id=39648
rafalh rafalh1992@o2.pl changed:
What |Removed |Added ---------------------------------------------------------------------------- Hardware|x86 |x86-64
https://bugs.winehq.org/show_bug.cgi?id=39648
--- Comment #2 from rafalh rafalh1992@o2.pl --- I meant ddk/wdm.h header, not wdk.h...
https://bugs.winehq.org/show_bug.cgi?id=39648
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch, win64 Status|UNCONFIRMED |NEW CC| |focht@gmx.net Version|unspecified |1.7.53 Summary|MTA: San Andreas cannot |MTA: San Andreas 1.5: |start in Wine64 |failure to process 64-bit | |FairplayKD.sys driver IRPs | |due to incorrect | |alignment/packing of I/O | |manager structures Ever confirmed|0 |1
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming, filling missing fields and refining summary.
Regards
https://bugs.winehq.org/show_bug.cgi?id=39648
--- Comment #4 from rafalh rafalh1992@o2.pl --- https://source.winehq.org/patches/data/116853
before patch:
wine32: sizeof(IRP) == 112 (0x70) sizeof(IO_STACK_LOCATION) == 36 (0x24)
wine64: sizeof(IRP) == 200 (0xc8) sizeof(IO_STACK_LOCATION) == 68 (0x44)
after patch:
wine32: sizeof(IRP) == 112 (0x70) sizeof(IO_STACK_LOCATION) == 36 (0x24)
wine64: sizeof(IRP) == 208 (0xd0) sizeof(IO_STACK_LOCATION) == 72 (0x48)
Checked sizes on http://msdn.moonsols.com and they are correct after the patch.
https://bugs.winehq.org/show_bug.cgi?id=39648
rafalh rafalh1992@o2.pl changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #5 from rafalh rafalh1992@o2.pl --- Patch already committed to master. I built Wine snapshot today and tested MTA:SA. It works fine in Wine WoW64 now (even regression I mentioned in description has gone). Thanks!
https://bugs.winehq.org/show_bug.cgi?id=39648
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |3acac5b2212c4d040ff2294e0a3 | |e782a0af5e65a
https://bugs.winehq.org/show_bug.cgi?id=39648
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #6 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.8-rc2.