http://bugs.winehq.org/show_bug.cgi?id=35109
Bug ID: 35109 Summary: L.A. Noire 1.3 (Steam version) crashes on startup Product: Wine Version: 1.7.8 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: user32 Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Classification: Unclassified
Hello folks,
as the summary says.
NOTE: Yes, there is bug 29128 - that one looks pretty messy - cluttered with various (different) issue.
I think this issue is a different/new thing, unreported yet (see later).
Fortunately winedbg crash reporting gives some hint:
--- snip --- Unhandled exception: page fault on read access to 0x0000c071 in 32-bit code (0xf75a11c4). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:f75a11c4 ESP:00332980 EBP:003329a8 EFLAGS:00010296( R- -- I S -A-P- ) EAX:0000c071 EBX:f7739000 ECX:003329c0 EDX:7ed3c180 ESI:00332cb0 EDI:02e1bc80 Stack dump: 0x00332980: 7edb2584 7ffd8000 001abc58 7bc5035e 0x00332990: 7bccf000 ffffffff 001abc58 003329c0 0x003329a0: 7ed73000 00332cb0 003329d8 7ec90769 0x003329b0: 0000c071 7ed3c2e8 7ec8c625 7ed1fc4f 0x003329c0: 7edb2580 00000009 00000012 00000000 0x003329d0: 00110000 7ed73000 00332a38 7ec90e80 000c: sel=0067 base=00000000 limit=00000000 16-bit --x Backtrace: =>0 0xf75a11c4 strcmpiW+0x16(str1=*** invalid address 0xc071 ***, str2="SysDateTimePick32") [/home/focht/projects/wine/wine-git/libs/wine/string.c:32] in libwine.so.1 (0x003329a8) 1 0x7ec90769 is_comctl32_class+0x59(name=*** invalid address 0xc071 ***) [/home/focht/projects/wine/wine-git/dlls/user32/class.c:156] in user32 (0x003329d8) 2 0x7ec90e80 CLASS_FindClass+0x125(name=*** invalid address 0xc071 ***, hinstance=0x7ec80000) [/home/focht/projects/wine/wine-git/dlls/user32/class.c:337] in user32 (0x00332a38) 3 0x7ec9305a GetClassInfoExA+0x12e(hInstance=<couldn't compute location>, name=<couldn't compute location>, wc=<couldn't compute location>) [/home/focht/projects/wine/wine-git/dlls/user32/class.c:1192] in user32 (0x00332c98) 4 0x7ec92e09 GetClassInfoA+0x37(hInstance=<couldn't compute location>, name=<couldn't compute location>, wc=<couldn't compute location>) [/home/focht/projects/wine/wine-git/dlls/user32/class.c:1123] in user32 (0x00332d18) 5 0x017edb1a in lanoire (+0x13edb19) (0x00332d68) 0xf75a11c4 strcmpiW+0x16 [/home/focht/projects/wine/wine-git/libs/wine/string.c:32] in libwine.so.1: movzwl 0x0(%eax),%eax 32 int ret = tolowerW(*str1) - tolowerW(*str2); ... Modules: Module Address Debug info Name (155 modules) PE 400000- 184f000 Export lanoire PE 2e50000- 2e66000 Deferred xinput1_3 PE 30c0000- 310b000 Deferred fmod_event PE 3110000- 3215000 Deferred fmodex PE 35b0000- 35f7000 Deferred binkw32 PE 4a50000- 4b08000 Deferred errorhandler PE 4fe0000- 51df000 Deferred d3dx9_43 PE 51e0000- 521f000 Deferred d3dx11_43 PE 5c20000- 5ee1000 Deferred steam PE 10000000-100a6000 Deferred gameoverlayrenderer PE 38000000-38881000 Deferred steamclient PE 3b400000-3b41f000 Deferred steam_api PE 3f000000-3f0ac000 Deferred tier0_s PE 3f600000-3f64b000 Deferred vstdlib_s PE 60000000-60008000 Deferred accessibility PE 78130000-781cb000 Deferred msvcr80 PE 78aa0000-78b5f000 Deferred msvcr100 PE 79000000-79046000 Deferred mscoree PE 79060000-790bb000 Deferred mscorjit PE 790c0000-79518000 Deferred mscorlib PE 79e70000-7a400000 Deferred mscorwks PE 7a440000-7a744000 Deferred system PE 7ade0000-7ae7c000 Deferred system.drawing PE 7afd0000-7b49e000 Deferred system.windows.forms ELF 7b800000-7ba60000 Deferred kernel32<elf> -PE 7b810000-7ba60000 \ kernel32 ... Threads: process tid prio (all id:s are in hex) 00000052 (D) C:\Program Files\Steam\SteamApps\common\L.A.Noire\LANoire.exe 0000005c 2 0000005b 0 00000051 0 <== --- snip ---
The relevant part of trace log:
HINT: avoid redirecting to log files residing in main Steam/app folder(s).
Steam has a directory change/watcher thread which is triggered _each_ time the trace log is written to, causing delays and/or other unintended side-effects.
--- snip --- $ pwd /home/focht/wine-apps/steam/wineprefix/drive_c/Program Files/Steam
$ wine ./steam.exe -applaunch 110800 -dev -console -allowdebug -nominidumps -windowed -nobreakpad >> ~/Downloads/log.txt 2>&1
... 0024:Call KERNEL32.CreateThread(00000000,00000000,7dc530ee,0ae69da8,00000000,00000000) ret=7dc540fe ... 0024:Ret KERNEL32.CreateThread() retval=00000510 ret=7dc540fe ... 0055:Call user32.RegisterClassExA(00332dd8) ret=00a9138e 0055:trace:class:CLASS_RegisterClass name=L"L.A. Noire" hinst=0x400000 style=0x3 clExtr=0x0 winExtr=0x0 0055:trace:class:RegisterClassExA name="L.A. Noire" atom=c06e wndproc=0xa91560 hinst=0x400000 bg=(nil) style=00000003 clsExt=0 winExt=0 class=0x1ce8f0 0055:Ret user32.RegisterClassExA() retval=0000c06e ret=00a9138e 0055:Call user32.FindWindowA(0000c06e,00000000) ret=00a9139e 0055:Ret user32.FindWindowA() retval=00000000 ret=00a9139e 0055:Call user32.GetClassInfoA(00000000,0000c06e,00332d3c) ret=017edb1a 0055:trace:class:GetClassInfoExA (nil) #c06e 0x332c8c 0055:trace:seh:raise_exception code=c0000005 flags=0 addr=0xf75cd1c4 ip=f75cd1c4 tid=0055 0055:trace:seh:raise_exception info[0]=00000000 0055:trace:seh:raise_exception info[1]=0000c06e 0055:trace:seh:raise_exception eax=0000c06e ebx=f7765000 ecx=00332980 edx=7ed2d180 esi=00332c70 edi=00332cfc 0055:trace:seh:raise_exception ebp=00332968 esp=00332940 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010296 ... --- snip ---
Not sure if the call "GetClassInfo( NULL, <atom_of_some_internal_class>, &info)" was really intended because it's useless if the class is not a system builtin/global one.
Source: http://source.winehq.org/git/wine.git/blob/c25c0198833885581dd381240882fc931...
--- snip --- 306 static CLASS *CLASS_FindClass( LPCWSTR name, HINSTANCE hinstance ) 307 { 308 static const WCHAR comctl32W[] = {'c','o','m','c','t','l','3','2','.','d','l','l',0}; 309 struct list *ptr; 310 ATOM atom = get_int_atom_value( name ); 311 312 GetDesktopWindow(); /* create the desktop window to trigger builtin class registration */ 313 314 for (;;) 315 { ... 337 if (!is_comctl32_class( name )) break; 338 if (GetModuleHandleW( comctl32W )) break; 339 if (!LoadLibraryW( comctl32W )) break; 340 TRACE( "%s retrying after loading comctl32\n", debugstr_w(name) ); 341 } 342 343 TRACE("%s %p -> not found\n", debugstr_w(name), hinstance); 344 return NULL; 345 } --- snip ---
is_comctl32_class() on an atom won't work.
The commit log for that component indicates that Alexandre did some rework here:
http://source.winehq.org/git/wine.git/commitdiff/c25c0198833885581dd38124088...
So technically it's a regression.
If that bug is fixed the game goes further with this social club/renderer process starting - only to complain with:
"DX94: Graphics card capabilities are below the minimum specifications."
Grmbl ...
$ wine --version wine-1.7.8-172-ga63222e
Regards
http://bugs.winehq.org/show_bug.cgi?id=35109
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |c25c0198833885581dd38124088 | |2fc9312c81f74
http://bugs.winehq.org/show_bug.cgi?id=35109
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |fb4441df73dc0a1974515aa9883 | |1fdda3250dab6 Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
this is fixed by commit http://source.winehq.org/git/wine.git/commitdiff/fb4441df73dc0a1974515aa9883...
Thanks Alexandre
Regards
https://bugs.winehq.org/show_bug.cgi?id=35109
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #2 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.9.