Bug 1211772

Summary: Segfault with MONO game after upgrade
Product: [openSUSE] openSUSE Tumbleweed Reporter: Peter Sütterlin <P.Suetterlin>
Component: MonoAssignee: E-mail List <bnc-team-mono>
Status: RESOLVED WORKSFORME QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None    
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Peter Sütterlin 2023-05-28 10:45:44 UTC
Starting with the upgrade to TW20230512 one of my games no longer runs.

The affected game is Hexcells Infinite, according to the start message it is a Mono game (which is why I report it within the Mono component).

Starting from a terminal, I get

woodstock:Hexcells-Infinite% ./Hexcells_Infinite 
Set current directory to /home/pit/Games/Hexcells-Infinite
Found path: /home/pit/Games/Hexcells-Infinite/Hexcells Infinite.x86_64
Mono path[0] = '/home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Managed'
Mono path[1] = '/home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono'
Mono config path = '/home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/etc'
Segmentation fault (core dumped)

I tried running it from strace, it ends with
access("/proc/self/maps", F_OK)         = 0
mmap(NULL, 4096, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f8f4f5000
mmap(NULL, 4096, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f8f4f4000
mprotect(0x7f0f8f4f4000, 4096, PROT_NONE) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, -1, 0) = -1 ENOMEM (Cannot allocate memory)
openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3
mmap(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, 3, 0) = -1 ENOMEM (Cannot allocate memory)
close(3)                                = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x5} ---
+++ killed by SIGSEGV (core dumped) +++


I just also tried running in gdb.  Interestingly, this time the launcher started (it first opens a window to select resolution and mode).  But starting the game it stopped with
Thread 3 "Hexcells_Infini" received signal SIGPWR, Power fail/restart.
(gdb) bt
#0  0x00007ffff7aa205e in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1  0x00007ffff7aadf40 in __new_sem_wait_slow64.constprop.0 () at /lib64/libc.so.6
#2  0x00007ffff6d9539b in mono_sem_wait () at /home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/x86_64/libmono.so
#3  0x00007ffff6cfb8d3 in  () at /home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/x86_64/libmono.so
#4  0x00007ffff6d65f2d in  () at /home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/x86_64/libmono.so
#5  0x00007ffff6d8cfc0 in  () at /home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/x86_64/libmono.so
#6  0x00007ffff6dae231 in  () at /home/pit/Games/Hexcells-Infinite/Hexcells Infinite_Data/Mono/x86_64/libmono.so
#7  0x00007ffff7aa5ab4 in start_thread () at /lib64/libc.so.6
#8  0x00007ffff7b2cb60 in clone3 () at /lib64/libc.so.6

The game is installed since at least 6 years, and I run it regularly.
On another computer that is still at TW20230427 it also runs without issues.
Comment 1 Peter Sütterlin 2023-05-28 20:01:06 UTC
An addition:
Found another game (Alwas Awakening) suffering from the same crash.  Also some Mono game.  That one however has both x86 and x86_64 binaries.
The x86_64 one crashes (Hexcells is also 64bit).  The x86 version does of Alwa does run.
Comment 2 Peter Sütterlin 2023-05-29 12:25:14 UTC
I realized I also have a 32bit version of Hexcells (I had deleted it as I run a 64bit system).  Also that one works without issues.

So definitely something changed after TW20230427 that is interfering with 64bit Mono executables.
Comment 3 Peter Sütterlin 2023-06-09 14:33:58 UTC
The issue vanished after an update to TW20230605