https://bugs.winehq.org/show_bug.cgi?id=45766
Bug ID: 45766 Summary: Doom 3: BFG hangs during launch Product: Wine Version: 3.15 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: sa@whiz.se Distribution: ---
Created attachment 62220 --> https://bugs.winehq.org/attachment.cgi?id=62220 backtrace from gdb
I'm getting a reproducible hang each time I start Doom 3: BFG, GOG version. (Yes, I know there's a native port!)
The hang happens after the intro videos are played, during the id/Bethesda logos.
This title seems to require a compatibility context which Mesa just recently started to support. Still, the game uses some none-spec OpenGL and requires force_glsl_extensions_warn=true and allow_glsl_builtin_variable_redeclaration=true to start.
An uneducated guess is something to do with audio? Those are the files the process keeps open, but might just be a coincidence. (Audio is played during the intro videos).
Native xact doesn't make a difference, disabling audio in Wine casues the game to refuse to run.
Doesn't seem to be a regression, it is there as far back as 1.9.10 (the last version with Platinum rating in AppDB)
Full backtrace from gdb is attached.
https://bugs.winehq.org/show_bug.cgi?id=45766
--- Comment #1 from Sven Arvidsson sa@whiz.se --- Created attachment 62221 --> https://bugs.winehq.org/attachment.cgi?id=62221 terminal output from wine 3.15
https://bugs.winehq.org/show_bug.cgi?id=45766
zzzzzyzz@hacari.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |zzzzzyzz@hacari.org
https://bugs.winehq.org/show_bug.cgi?id=45766
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #2 from joaopa jeremielapuree@yahoo.fr --- Does the bug still occur with wine-5.0-rc2?
https://bugs.winehq.org/show_bug.cgi?id=45766
--- Comment #3 from Sven Arvidsson sa@whiz.se --- Created attachment 70635 --> https://bugs.winehq.org/attachment.cgi?id=70635 hack for X11DRV_ToUnicodeEx
I finally had time to look into this and it turns out the game is stuck in an infinite loop in ToUnicodeEx when looking up keymappings. Specifically this call:
0024:trace:keyboard:ToUnicodeEx virt 186, scan 27, state 0226F054, str 0226F154, size 5, flags 0, layout 08090809.
In my (Swedish) keyboard layout this maps to a dead_diaeresis.
On Windows a second consecutive call to ToUnicodeEx with a dead key should return a positive result (similar to pressing the key twice on the keyboard) this is unimplemented in Wine which keeps returning -1, and the game is stuck there.
Another issue is that changing the keyboard layout on the fly is not enough to reproduce or work around the bug. X11DRV_ToUnicodeEx keeps looking up the key for the original keyboard layout.
I'm attaching a small patch that works around the problem with the game, but it's just a hack that returns 1 for a second call with the same dead key.
I'm not sure where the bug should be reassigned, winex11.drv?
https://bugs.winehq.org/show_bug.cgi?id=45766
Neko-san nekoNexus@protonmail.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nekoNexus@protonmail.ch