http://bugs.winehq.org/show_bug.cgi?id=10979
Summary: Descent FreeSpace Retail and Demo hang in IDirectDraw2Impl_SetDisplayMode Product: Wine Version: 0.9.52. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx-ddraw AssignedTo: wine-bugs@winehq.org ReportedBy: remailer@gmail.com
Created an attachment (id=9935) --> (http://bugs.winehq.org/attachment.cgi?id=9935) WINEDEBUG=relay wine FS.exe 2>FS.exe.txt ; bzip2 FS.exe.txt
Descent FreeSpace the Great War Retail and Demo appear to hang in IDirectDraw2Impl_SetDisplayMode. Tested with 800x600 virtual desktop.
Attached relay log of wine-0.9.52 - I don't think this application has been working under wine before.
The demo version can be obtained from here:
http://www.pxo.net/files/fsdemo10.exe - 26MB
The hang occurs regardless of whether software or hardware acceleration is used in the settings. I interrupted wine after several minutes of this behavior which is where the log terminates.
http://bugs.winehq.org/show_bug.cgi?id=10979
Jeff Zaroyko jeffzaroyko@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |http://www.pxo.net/files/fsd | |emo10.exe Component|directx-ddraw |msacm32 Keywords| |download Summary|Descent FreeSpace Retail and|Descent FreeSpace Retail and |Demo hang in |Demo hang |IDirectDraw2Impl_SetDisplayM| |ode |
--- Comment #1 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-02-16 21:39:14 --- Taking another look at this, it might actually be a sound bug, application says "Warning: Could not properly initialize the Microsoft ADPCM codec." Also noticed a glibc error, see attached.
http://bugs.winehq.org/show_bug.cgi?id=10979
--- Comment #2 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-02-16 21:40:42 --- Created an attachment (id=10819) --> (http://bugs.winehq.org/attachment.cgi?id=10819) output from glibc
http://bugs.winehq.org/show_bug.cgi?id=10979
Arno Schuring aelschuring@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aelschuring@hotmail.com
--- Comment #3 from Arno Schuring aelschuring@hotmail.com 2008-05-01 10:30:29 --- I'm also experiencing problems when trying to run Freespace. I seem to remember having it working under wine before (ancient history - probably near 0.9.30 or maybe even older), but I could be wrong. Right now my system is an up-to-date Ubuntu Hardy on AMD64, with wine-0.9.59 (from the Ubuntu repositories).
First I get a message about missing ADPCM support ("Could not properly initialize the Microsoft ADPCM codec"), but the game will continue to start. It will even switch the screen to 640x480 mode, but then the software seems to be hanging in a polling loop somewhere:
fixme:heap:RtlCompactHeap (0x11e0000, 0x1) stub fixme:win:EnumDisplayDevicesW ((null),0,0x31eea4,0x00000000), stub! err:ntdll:RtlpWaitForCriticalSection section 0x7e2980 "?" wait timed out in thread 001e, blocked by 001d, retrying (60 sec) err:ntdll:RtlpWaitForCriticalSection section 0x7e2980 "?" wait timed out in thread 001e, blocked by 001d, retrying (60 sec)
This appears to be a deadlock condition in ntdll.
I have not experienced any glibc error messages.
Note 1: the games' readme.txt mentions the error message about MSACM: - You need to install an ACM on your machine. - You don't have msacm32.dll in your path - Your ACM version is not 3.5 or higher
(the system.reg file mentions msacm32.dll in [\Software\Microsoft\AudioCompressionManager\DriverCache\msacm32.dll], but there is no such file to be found under ~/.wine
Note 2: the demo is no longer available from the forementioned URL, because it seems Parallax Online no longer has a website. It is available from
http://download.descent-network.com/shareware1/freespace1/playable/fsdemo10....
instead, and if that site goes down as well, it's available through me (just send me an e-mail)
http://bugs.winehq.org/show_bug.cgi?id=10979
--- Comment #4 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-05-01 16:22:25 --- I've fixed the MSADPCM message, you need to run latest git or wait for the next release.
I'm working on the second issue todo with messaging, so stay tuned. Strange.. the pxo website was working only a few days ago.
http://bugs.winehq.org/show_bug.cgi?id=10979
--- Comment #5 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-05-02 02:06:09 --- Created an attachment (id=12636) --> (http://bugs.winehq.org/attachment.cgi?id=12636) a patch to user32/winpos.c
The chain of events for FS2.exe leading up to the hang,
FS.exe suspends the thread that the window belongs to using SuspendThread (not a recommended practice) FS.exe uses ddraw to change the display mode to 640x480
wine calls DirectDrawImpl_SetDisplayModeNoOverride - ddraw/ddraw.c IWineD3DDeviceImpl_SetDisplayMode - wined3d/device.c MoveWindow - user32/winpos.c SetWindowPos - user32/winpos.c SendMessageW( winpos.hwnd, WM_WINE_SETWINDOWPOS, 0, (LPARAM)&winpos );
the WM_WINE_SETWINDOWPOS is sent to the hwnd in the thread that was suspended by FS.exe which causes the call to SendMessageW to block because the message is not processed.
Replacing SendMessageW with SendMessageTimeoutW as per the attached patch, the game starts instead of hanging.
if testing you may notice an unrelated issue, the game's audio thread crashes in the lobby but it can be avoided if you use a native msadp32.acm
http://bugs.winehq.org/show_bug.cgi?id=10979
Jeff Zaroyko jeffzaroyko@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|msacm32 |directx-ddraw
http://bugs.winehq.org/show_bug.cgi?id=10979
--- Comment #6 from Roderick Colenbrander thunderbird2k@gmx.net 2008-05-02 02:52:33 --- One small remark which might be useful for this bug. Age of Empiress II (when setting DirectDrawRenderer to opengl; some frames are flipped right now, but ignore that) crashes when you enter the game itself UNLESS SetDisplayMode in wined3d/swapchain.c SwapChainImpl_Destroy is disabled. Not sure but it might be a similar issue, so when it is a possible fix should likely have to fix both issues.
http://bugs.winehq.org/show_bug.cgi?id=10979
--- Comment #7 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-05-02 03:24:07 --- (In reply to comment #6)
One small remark which might be useful for this bug. Age of Empiress II (when setting DirectDrawRenderer to opengl; some frames are flipped right now, but ignore that) crashes when you enter the game itself UNLESS SetDisplayMode in wined3d/swapchain.c SwapChainImpl_Destroy is disabled. Not sure but it might be a similar issue, so when it is a possible fix should likely have to fix both issues.
as you said on irc, it isn't the same bug.
This is simply a matter of Wine calling a function in SetDisplayMode which expects a message to always be processed - but the application has suspended the thread which processes messages, this does not give Wine the chance to process an internal message so it waits forever and never returns from SetDisplayMode.
http://bugs.winehq.org/show_bug.cgi?id=10979
Jeff Zaroyko jeffz@jeffz.name changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #8 from Jeff Zaroyko jeffz@jeffz.name 2008-12-01 18:18:32 --- Tested with wine-1.1.9-183-gbbaa72d, demo and retail start and exit fine now.
http://bugs.winehq.org/show_bug.cgi?id=10979
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #9 from Alexandre Julliard julliard@winehq.org 2008-12-05 11:14:01 --- Closing bugs fixed in 1.1.10.
http://bugs.winehq.org/show_bug.cgi?id=10979
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |directx-d3d