Non-Wine Supplied 32-bit Programs Crash (32 and 64-bit of Same Program with Logs Provided, Clean Prefix)

Questions about Wine on Linux
Locked
TommyC
Level 2
Level 2
Posts: 21
Joined: Tue Jul 10, 2012 5:47 pm

Non-Wine Supplied 32-bit Programs Crash (32 and 64-bit of Same Program with Logs Provided, Clean Prefix)

Post by TommyC »

Hello,

I have an odd problem where many 32-bit programs have stopped launching properly recently but I can't quite identify where the source of the problem is. Wine's 32-bit programs (in <wine's prefix>/lib/wine/i386-windows) seem to be working fine. While I haven't tested all of them, notepad, taskmgr, cmd, winecfg, wineboot and many others function as intended.

Wine (8.14) was not upgraded, neither was the kernel or anything significant that wine depends on that I can think of.

To try and get some helpful logs out of this, I ran a Unity program where I have both the 32 and 64-bit counterparts. Attached are the output of:

Code: Select all

wine <Unity Program>.exe
32.txt.xz
32-bit Unity Program that crashes.
(976 Bytes) Downloaded 99 times
64.txt.xz
64-bit Unity Program that runs fine.
(1.5 KiB) Downloaded 90 times
as well as the diff (diff -u specifically) output of both logs.
diff_32_and_64.txt.xz
diff -u 32.txt 64.txt
(1.95 KiB) Downloaded 93 times
The 32-bit version of the program crashes but the 64-bit one runs just fine. As the title of this post suggests, this problem occurs with other non-Unity based software and specifically only seems to be failing for 32-bit software outside of what's shipped with wine.

The

Code: Select all

err:system:update_display_cache Failed to read display config.
in both 32 and 64-bit versions are a bit concerning and despite being errors don't cause the 64-bit version of the program to crash. After finding the relevant function to that error in

Code: Select all

dlls/win32u/sysparams.c
the only recent changes to the file in wine's git commit logs were string length changes.

The failed assertion on line 75 of the 32-bit version at

Code: Select all

dlls/mmdevapi/mmdevapi_private.h
seems to occur after the 32-bit program crashes, so I'm unfamiliar with how significant that may be to the problem at hand.

I also did build wine 8.16 (the failed assertion occurs on a different line) and tried that version to no avail. I reverted to 8.14 (by rebuilding) to remove as many vectors of change to make this issue easier to debug.

I'm not familiar with wine's debugger so if there are any recommended WINEDEBUG flags to reproduce the logs with, please let me know and I'd be happy to help.
TommyC
Level 2
Level 2
Posts: 21
Joined: Tue Jul 10, 2012 5:47 pm

Re: Non-Wine Supplied 32-bit Programs Crash (32 and 64-bit of Same Program with Logs Provided, Clean Prefix)

Post by TommyC »

Since it's been 10 days, I thought I'd post some more information (this time with Baldur's Gate 2: Enhanced Edition from GOG) in case it helps anyone find the issue at hand.

I've compiled and ran it with wine-8.17 this time.

Code: Select all

preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
002c:err:system:update_display_cache Failed to read display config.
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0024:err:system:update_display_cache Failed to read display config.
010c:err:system:update_display_cache Failed to read display config.
0110:fixme:ver:GetCurrentPackageId (0483FF20 00000000): stub
Assertion failed: !status, file ../dlls/mmdevapi/mmdevapi_private.h, line 69
Running with WINEDEBUG=all results in a log file that's larger than 250 MiB and attachments can only be up to 256 KiB on winehq.org, so if anyone knows what specific WINEDEBUG flags would be most helpful in finding the cause of why non-wine supplied 32-bit software is failing to run (and hopefully reduce the log file size so I can include it), please let me know.
Locked