http://bugs.winehq.org/show_bug.cgi?id=9220
Summary: Final Fantasy 7 hangs in winmm Product: Wine Version: 0.9.42. Platform: Other URL: http://games.softpedia.com/get/Games-Demo/Final-Fantasy- Demo.shtml OS/Version: other Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-multimedia AssignedTo: wine-bugs@winehq.org ReportedBy: stefandoesinger@gmx.at
Final Fantasy 7 seems to get stuck or deadlocked on startup, showing only a black screen that does not update. The threads seem to hang in winmm.
To run the game, MIDI support is needed. This can be done by starting timidity in alsa server mode(timidity -iA), then running the game.
A winedbg session brings up this:
$ /usr/src/wine/linux/wine winedbg Wine-dbg>info process pid threads parent executable (all id:s are in hex) 0000000a 5 00000008 'ff7demo.exe' 00000008 1 00000000 'explorer.exe' Wine-dbg>attach 0xa 0xffffe410: popl %ebp Wine-dbg>info thread process tid prio (all id:s are in hex) 0000000a (D) Z:\dev\shm\ff7demo.exe 00000012 15 <== 00000011 15 00000010 15 0000000e 0 0000000b 0 00000008 00000009 0 Wine-dbg>bt 0x12 Backtrace: =>1 0xffffe410 (0x7cd72750) 2 0x00000000 (0x7cd727f8) 3 0x7efc062e wine_server_call+0x12e(req_ptr=<register EDI not in topmost frame>) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/server.c:324] in ntdll (0x7cd728d8) 4 0x7efc6d85 NtSuspendThread+0x45(handle=0x130, count=0x7cd72990) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/thread.c:672] in ntdll (0x7cd72968) 5 0x7ee898f4 SuspendThread+0x24(hthread=0x130) [/usr/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/thread.c:274] in kernel32 (0x7cd72998) 6 0x7ed8aea1 MMSYSTEM_MidiStream_Player+0xb1(pmt=0x1cab30) [/usr/src/wine/linux/dlls/winmm/../../../dlls/winmm/winmm.c:1641] in winmm (0x7cd72a28) 7 0x7efc68ae call_thread_entry_point+0xe() in ntdll (0x7cd72a38) 8 0x7efc7562 call_thread_func+0x42(rtl_func=<register EDI not in topmost frame>, arg=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/thread.c:401] in ntdll (0x7cd72ad8) 9 0x7efc77ff in ntdll (+0x577ff) (0x7cd733d8) 10 0xf7e472c1 start_thread+0xcb() in libpthread.so.0 (0x7cd734c8) 11 0xf7ddbd0e __clone+0x5e() in libc.so.6 (0x00000000) Wine-dbg>bt 0x11 Backtrace: =>1 0xffffe410 (0x7cf94988) 2 0xffffffff (0x7cf949a8) 3 0x7d75028b ALSA_WaitRingMessage+0x3b(omr=0x1687d0, sleep=0xffffffff) [/usr/src/wine/linux/dlls/winealsa.drv/../../../dlls/winealsa.drv/alsa.c:120] in winealsa (0x7cf949d8) 4 0x7d760a2c wodPlayer+0x9c(pmt=<is not available>) [/usr/src/wine/linux/dlls/winealsa.drv/../../../dlls/winealsa.drv/waveout.c:523] in winealsa (0x7cf94a28) 5 0x7efc68ae call_thread_entry_point+0xe() in ntdll (0x7cf94a38) 6 0x7efc7562 call_thread_func+0x42(rtl_func=<register EDI not in topmost frame>, arg=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/thread.c:401] in ntdll (0x7cf94ad8) 7 0x7efc77ff in ntdll (+0x577ff) (0x7cf953d8) 8 0xf7e472c1 start_thread+0xcb() in libpthread.so.0 (0x7cf954c8) 9 0xf7ddbd0e __clone+0x5e() in libc.so.6 (0x00000000) Wine-dbg>bt 0x10 Backtrace: =>1 0xffffe410 (0x7ce839a8) 2 0x00000009 (0x7ce839c8) 3 0x7ed860bf TIME_MMSysTimeThread+0x1ef(arg=0x0) [/usr/src/wine/linux/dlls/winmm/../../../dlls/winmm/time.c:222] in winmm (0x7ce83a28) 4 0x7efc68ae call_thread_entry_point+0xe() in ntdll (0x7ce83a38) 5 0x7efc7562 call_thread_func+0x42(rtl_func=<register EDI not in topmost frame>, arg=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/thread.c:401] in ntdll (0x7ce83ad8) 6 0x7efc77ff in ntdll (+0x577ff) (0x7ce843d8) 7 0xf7e472c1 start_thread+0xcb() in libpthread.so.0 (0x7ce844c8) 8 0xf7ddbd0e __clone+0x5e() in libc.so.6 (0x00000000) Wine-dbg>bt 0xe Backtrace: =>1 0xffffe40e (0x7d0d55c4) 2 0x00000008 (0x7d0d5618) 3 0x7efc4fbb NTDLL_wait_for_multiple_objects+0x1eb(count=0x1, handles=0x7d0d5790, flags=0x4, timeout=0x0, signal_object=0x0) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/sync.c:873] in ntdll (0x7d0d5728) 4 0x7efc5282 NtWaitForMultipleObjects+0x62(count=<register EDI not in topmost frame>, handles=0x7d0d5790, wait_all=0x0, alertable=<register ESI not in topmost frame>, timeout=0x0) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/sync.c:911] in ntdll (0x7d0d5758) 5 0x7ee81783 WaitForMultipleObjectsEx+0x133(count=0x1, handles=0x7d0d5988, wait_all=0x0, timeout=0xffffffff, alertable=0x0) [/usr/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/sync.c:192] in kernel32 (0x7d0d58a8) 6 0x7e7a807c X11DRV_MsgWaitForMultipleObjectsEx+0x7c(count=0x1, handles=0x7d0d5988, timeout=0xffffffff, mask=0x4ff, flags=<register EDI not in topmost frame>) [/usr/src/wine/linux/dlls/winex11.drv/../../../dlls/winex11.drv/event.c:305] in winex11 (0x7d0d58d8) 7 0x7eca706b GetMessageW+0x1bb(msg=0x7d0d5a00, hwnd=0x0, first=0x0, last=0x0) [/usr/src/wine/linux/dlls/user32/../../../dlls/user32/message.c:2879] in user32 (0x7d0d5998) 8 0x7e9ae71c hook_thread_proc+0x9c(param=0x344df0) [/usr/src/wine/linux/dlls/dinput/../../../dlls/dinput/dinput_main.c:896] in dinput (0x7d0d5a28) 9 0x7efc68ae call_thread_entry_point+0xe() in ntdll (0x7d0d5a38) 10 0x7efc7562 call_thread_func+0x42(rtl_func=<register EDI not in topmost frame>, arg=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/thread.c:401] in ntdll (0x7d0d5ad8) 11 0x7efc77ff in ntdll (+0x577ff) (0x7d0d63d8) 12 0xf7e472c1 start_thread+0xcb() in libpthread.so.0 (0x7d0d64c8) 13 0xf7ddbd0e __clone+0x5e() in libc.so.6 (0x00000000) Wine-dbg>bt 0xb Backtrace: =>1 0xffffe40e (0x003447bc) 2 0x00000008 (0x00344810) 3 0x7efc4fbb NTDLL_wait_for_multiple_objects+0x1eb(count=0x1, handles=0x344988, flags=0x4, timeout=0x0, signal_object=0x0) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/sync.c:873] in ntdll (0x00344920) 4 0x7efc5282 NtWaitForMultipleObjects+0x62(count=<register EDI not in topmost frame>, handles=0x344988, wait_all=0x0, alertable=<register ESI not in topmost frame>, timeout=0x0) [/usr/src/wine/linux/dlls/ntdll/../../../dlls/ntdll/sync.c:911] in ntdll (0x00344950) 5 0x7ee81783 WaitForMultipleObjectsEx+0x133(count=0x1, handles=0x344ac8, wait_all=0x0, timeout=0xffffffff, alertable=0x0) [/usr/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/sync.c:192] in kernel32 (0x00344aa0) 6 0x7ee8197c WaitForSingleObject+0x3c(handle=0x12c, timeout=0xffffffff) [/usr/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/sync.c:129] in kernel32 (0x00344ac0) 7 0x7ed8a8d3 MMSYSTEM_MidiStream_PostMessage+0x63(lpMidiStrm=<register ESI not in topmost frame>, msg=<is not available>, pmt1=<is not available>, pmt2=0x0) [/usr/src/wine/linux/dlls/winmm/../../../dlls/winmm/winmm.c:1747] in winmm (0x00344af0) 8 0x7ed8aa85 midiStreamStop+0x55(hMidiStrm=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/winmm/../../../dlls/winmm/winmm.c:2026] in winmm (0x00344b30) 9 0x7ed8d0d0 midiStreamClose+0x40(hMidiStrm=<register ESI not in topmost frame>) [/usr/src/wine/linux/dlls/winmm/../../../dlls/winmm/winmm.c:1768] in winmm (0x00344b70) 10 0x004aebed in ff7demo (+0xaebed) (0x00344b88) 11 0x004acaab in ff7demo (+0xacaab) (0x00344e98) 12 0x00408860 in ff7demo (+0x8860) (0x003450c4) 13 0x0046ec24 in ff7demo (+0x6ec24) (0x003451f8) 14 0x0072049b in ff7demo (+0x32049b) (0x0034fe7c) 15 0x006edcb2 in ff7demo (+0x2edcb2) (0x0034ff08) 16 0x7ee6d58c start_process+0xec(arg=0x0) [/usr/src/wine/linux/dlls/kernel32/../../../dlls/kernel32/process.c:820] in kernel32 (0x0034ffe8) 17 0xf7e7b5b7 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000) Wine-dbg>bt 0x9 Unknown thread id (0009) in process (000a) Wine-dbg>bt 0x8 Unknown thread id (0008) in process (000a) Wine-dbg>
One thread is suspended, one waits inside winealsa, one seems to belong to winmm, one seems to read the message queue, and the last one is also waiting for objects in winmm.