Bugzilla – Bug 1211772
Segfault with MONO game after upgrade
Last modified: 2023-06-09 14:33:58 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.
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.
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.
The issue vanished after an update to TW20230605