http://bugs.winehq.org/show_bug.cgi?id=26541
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://cdn-files2.gamepron. |http://www.ausgamers.com/fi |com/file/228264907671-80354 |les/download/57867/dragonsa |911793606-50897658746298-40 |ga-client-v012920110216 |924535400/DragonSagaInstall | |er-0.1.29-20110216.msi | Component|-unknown |ntdll Summary|Dragon Saga doesn't start |Dragon Saga crashes | |randomly on startup (needs | |ntdll.DbgUiConvertStateChan | |geStructure, | |ntdll.KiRaiseUserExceptionD | |ispatcher, | |ntdll.NtSetDebugFilterState | |stub exports)
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
the random startup failure is still present. Updating download link.
Relevant trace log:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Gravity/Dragon Saga/Release
$ WINEDEBUG=+tid,+seh,+relay wine ./DragonSaga.EXE >>log.txt 2>&1 ... 0025:Call KERNEL32.LoadLibraryA(0033fc70 "kernel32.dll") ret=0158f21e 0025:Ret KERNEL32.LoadLibraryA() retval=7b810000 ret=0158f21e 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "DebugActiveProcess") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b8215fc ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "GetTickCount") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b823474 ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "GetProcAddress") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b822e5c ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "GetVersion") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b82357c ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "LoadLibraryA") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b8240bc ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "OpenProcess") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b82456c ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "OutputDebugStringA") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b82462c ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "OutputDebugStringW") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b824644 ret=0158f1d1 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc70 "SuspendThread") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=7b8254b4 ret=0158f1d1 0025:Call KERNEL32.LoadLibraryA(0033fc70 "ntdll.dll") ret=0158f21e 0025:Ret KERNEL32.LoadLibraryA() retval=7bc10000 ret=0158f21e 0025:Call KERNEL32.GetProcAddress(7bc10000,0033fc70 "DbgUiConvertStateChangeStructure") ret=0158f1d1 0025:Ret KERNEL32.GetProcAddress() retval=00000000 ret=0158f1d1 0025:Call KERNEL32.LoadLibraryA(0033fc4c "kernel32.dll") ret=0158e202 0025:Ret KERNEL32.LoadLibraryA() retval=7b810000 ret=0158e202 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "DebugActiveProcess") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b8215fc ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "GetTickCount") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b823474 ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "GetProcAddress") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b822e5c ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "GetVersion") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b82357c ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "LoadLibraryA") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b8240bc ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "OpenProcess") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b82456c ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "OutputDebugStringA") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b82462c ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "OutputDebugStringW") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b824644 ret=0158e1aa 0025:Call KERNEL32.GetProcAddress(7b810000,0033fc4c "SuspendThread") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=7b8254b4 ret=0158e1aa 0025:Call KERNEL32.LoadLibraryA(0033fc4c "ntdll.dll") ret=0158e202 0025:Ret KERNEL32.LoadLibraryA() retval=7bc10000 ret=0158e202 0025:Call KERNEL32.GetProcAddress(7bc10000,0033fc4c "DbgUiConvertStateChangeStructure") ret=0158e1aa 0025:Ret KERNEL32.GetProcAddress() retval=00000000 ret=0158e1aa 0025:trace:seh:raise_exception code=c0000005 flags=0 addr=0x12397f4 ip=012397f4 tid=0025 0025:trace:seh:raise_exception info[0]=00000000 0025:trace:seh:raise_exception info[1]=00000023 0025:trace:seh:raise_exception eax=0158e5c0 ebx=00000000 ecx=0033fd40 edx=7bca4d20 esi=00000001 edi=012397e8 0025:trace:seh:raise_exception ebp=0033fe20 esp=0033fd48 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00210203 0025:trace:seh:call_stack_handlers calling handler at 0xcb918c code=c0000005 flags=0 --- snip ---
It seems adding the following stub exports really helps the game (no more random crashes on startup):
--- snip --- ntdll.DbgUiConvertStateChangeStructure ntdll.KiRaiseUserExceptionDispatcher ntdll.NtSetDebugFilterState --- snip ---
Just remove the comment before each API from ntdll.spec file to have the default unimpl stub generated.
Source: http://source.winehq.org/git/wine.git/blob/b6b9050d58d8baaea843c633f5968be90...
--- snip --- 35 # @ stub DbgUiConvertStateChangeStructure ... 47 # @ stub KiRaiseUserExceptionDispatcher ... 315 # @ stub NtSetDebugFilterState --- snip ---
$ sha1sum DragonSagaInstaller-0.1.29-20110216.msi 8f359ccb7c9a09bb0e06b9f4d3423750df23c51a DragonSagaInstaller-0.1.29-20110216.msi
$ du -sh DragonSagaInstaller-0.1.29-20110216.msi 1.9G DragonSagaInstaller-0.1.29-20110216.msi
$ wine --version wine-1.7.8-248-g8dd9c61
Regards