Open ricoazzurro opened 1 year ago
3F B3 FF 17 1F 20 03 D5 1F 20 03 D5 FD 7B BE
is not a valid opcode, can you retry with Dynarec off (i.e. BOX64_DYNAREC=0
) to see if it works?
Dynarec off:
rico [ /opt/games/void_scrappers ]$ BOX64_DYNAREC=0 ./VoidScrappers.x86_64
Dynarec is off
Running on Cortex-A55 Cortex-A76 with 8 Cores
Params database has 25 entries
Box64 with Dynarec v0.2.3 1d98aa5 built on May 23 2023 00:11:56
Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/
Using default BOX64_PATH: ./:bin/
Counted 59 Env var
Looking for ./VoidScrappers.x86_64
Rename process to "VoidScrappers.x86_64"
Using emulated libGalaxy64.so
Using native(wrapped) libopenal.so.1
Using native(wrapped) libXext.so.6
Using native(wrapped) libX11.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libXi.so.6
Using native(wrapped) libGL.so.1
Using native(wrapped) libGLU.so.1
Using native(wrapped) libm.so.6
Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6
Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1
Registered aabb Extension
[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
INFO:CRASH: Successfully wrote Crashdump to file: /home/rico/.Defold/_crash
ERROR:CRASH: CALL STACK:
ERROR:CRASH: /opt/games/void_scrappers/VoidScrappers.x86_64+2789f5 [0x6789f5]
ERROR:CRASH: ??? [0x30080]
ERROR:CRASH: ??? [0x6bbbdaf0]
ERROR:CRASH:
1377|SIGSEGV @0x34baded4 (???(./VoidScrappers.x86_64+0x34baded4)) (x64pc=0x7fa1133420/???:"???", rsp=0x101ffc308, stack=0x101800000:0x102000000 own=(nil) fp=0x6bbbb750), for accessing 0x7fa1133420 (code=2/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=(nil)
RSP-0x20:0x0000000000000000 RSP-0x18:0x000000010d4c0380 RSP-0x10:0x00000000005a660d RSP-0x08:0x000000010d4c0380
RSP+0x00:0x00000000006de5b9 RSP+0x08:0x0000000057d49fe3 RSP+0x10:0x000000010d4c0380 RSP+0x18:0x0000000057d49fe3
RAX:0x0000007fa1133420 RCX:0x0000000000000004 RDX:0x0000007f75296ed0 RBX:0x000000010d4c0380
RSP:0x0000000101ffc308 RBP:0x000000006bbbb750 RSI:0x0000000000a00007 RDI:0x0000007fa12542f8
R8:0x0000007fa000a178 R9:0x00000000007d66a0 R10:0x000000010d4d50b0 R11:0xfffffffffffffff7
R12:0x0000000000000000 R13:0x0000000000000000 R14:0x000000010d4c1370 R15:0x0000000000696ee0
Segmentation fault (core dumped)
So it's not an opcode issue. I can reproduce this on my local machine, it's a RISC-V SBC, but it fails exactly the same way. And with some quick debugging, it crashed in the Run
function of the interpreter:
https://github.com/ptitSeb/box64/blob/main/src/emu/x64run.c#L563
... where the ed
has a bad address value, which triggered the segfault. But I don't know why yet.
I don't have the game, so cannot test on my side. I suspect it's a wrong jump address at some point, maybe in a wrongly wrapped function with a callback.
Can you try with a BOX64_ROLLING_LOG=1
to see latest called functions?
Here is the full log: https://ksco.cool/tWMR, but I don't see anything suspicious.
That was without dynarec right?
Yes, it will fails in jitted code if Dynarec is on, which is harder to debug.
but it may be failling on the same spot? did you tried the ROLLING_LOG there too?
Yes, it looks pretty much the same, except it segfaulted in ??? ()
I'm giving Factorio another try (with QEMU RISC-V and box64 RISC-V Dynarec OFF), and it fails at the exact same line of code. It might be the same kind of issue.
Logs:
ksco@Monster:~/Documents/Factorio$ QEMU_LD_PREFIX=~/Developer/archriscv BOX64_DYNAREC=0 BOX64_SHOWSEGV=1 BOX64_ROLLING_LOG=1 ~/Developer/box64/build/box64 bin/x64/factorio
Rolling log, showing last 16 function call on signals
Dynarec is off
Show Segfault signal even if a signal handler is present
Running on Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz with 12 Cores
Params database has 10 entries
Box64 with Dynarec v0.2.3 9de2aa55 built on May 28 2023 00:26:19
Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/
Using default BOX64_PATH: ./:bin/
Counted 63 Env var
Looking for bin/x64/factorio
Apply RC params for factorio
Applying BOX64_DYNAREC_FASTROUND=0
Rename process to "factorio"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using native(wrapped) libresolv.so.2
Using emulated /home/ksco/Documents/Factorio/bin/x64/../../lib/libsteam_api.so
Using native(wrapped) libX11.so.6
Using native(wrapped) libXext.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libGL.so.1
Using native(wrapped) libXinerama.so.1
Using native(wrapped) libXrandr.so.2
Using native(wrapped) libXrender.so.1
Using native(wrapped) libXcursor.so.1
Using native(wrapped) libasound.so.2
Using native(wrapped) libpulse.so.0
Using native(wrapped) libpulse-simple.so.0
Using native(wrapped) libm.so.6
Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6
Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1
Look for __res_nquery in loaded elfs
Found symbol with version GLIBC_2.27, value = 0x4000901f34
Look for __dn_expand in loaded elfs
Found symbol with version GLIBC_2.27, value = 0x40008fbf38
0.000 Initializing Steam API.
Last calls
20861|0x20214ec: Calling strlen (/usr/lib/libc.so.6)("system-write-data") => return 0x11
20861|0x202150a: Calling __memcmpeq (/usr/lib/libc.so.6)(0x377B8020, 0x208297B, 0x11, ...) => return 0x0
20861|0x1fa5db8: Calling malloc (bin/x64/factorio)(0x26, 0x101FFA448, 0x0, ...) => return 0x377B7320
20861|0x77d17c: Calling memcpy (/usr/lib/libc.so.6)(0x377B7320, 0x377B4360, 0x25, ...) => return 0x377B7320
20861|0x1fa5db8: Calling malloc (bin/x64/factorio)(0x158, 0x377B6EC0, 0x25, ...) => return 0x377B7350
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B7398, 0x377B6F08, 0x4, ...) => return 0x377B7398
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B73C8, 0x377B6F38, 0x4, ...) => return 0x377B73C8
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B73F8, 0x377B6F68, 0x9, ...) => return 0x377B73F8
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B7428, 0x377B6F98, 0x8, ...) => return 0x377B7428
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B7458, 0x377B6FC8, 0x3, ...) => return 0x377B7458
20861|0x204a0e7: Calling memcpy (/usr/lib/libc.so.6)(0x377B7488, 0x377B6FF8, 0x3, ...) => return 0x377B7488
20861|PltResolver "getuid" => return 0x377B7350
20861|0x88b2bd: Calling getuid (/usr/lib/libc.so.6)(0x101FFA4B0, 0x0, 0x3, ...) => return 0x3E8
20861|PltResolver "getpwuid" => return 0x3E8
20861|0x88b2c4: Calling getpwuid (/usr/lib/libc.so.6)(0x3E8, 0x0, 0x3, ...) => return 0x0
20861|0x202150a: Calling __memcmpeq (/usr/lib/libc.so.6)(0x377B8020, 0x208296A, 0x10, ...) => return 0x5
20861|SIGSEGV @0x34b4c436 (???(bin/x64/factorio+0x34b4c436)) (x64pc=0x88b2d2//home/ksco/Documents/Factorio/bin/x64/factorio:"???", rsp=0x101ffa400, stack=0x101800000:0x102000000 own=(nil) fp=0x101ffa480), for accessing 0x20 (code=1/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=0x145ad40
RSP-0x20:0x0000000101ffa418 RSP-0x18:0x00000000365adeb0 RSP-0x10:0x00000000000000fc RSP-0x08:0x000000000088b2c4
RSP+0x00:0x00000000377b4360 RSP+0x08:0x000000000204a1b5 RSP+0x10:0x0000000000000006 RSP+0x18:0x0000000000000000
RAX:0x0000000000000000 RCX:0x3fffffffffffffff RDX:0x0000000002064f64 RBX:0x0000000101ffa4b0
RSP:0x0000000101ffa400 RBP:0x0000000101ffa480 RSI:0x0000000002064f5a RDI:0x0000000101ffa430
R8:0x0000000000000078 R9:0x0000000000000000 R10:0x00000000028126e0 R11:0x0000000000000000
R12:0x0000000101ffa780 R13:0x0000000101ffa440 R14:0x0000000101ffa652 R15:0x00000000377b03cb
0.000 Error CrashHandler.cpp:635: Received SIGSEGV
0.000 Error Util.cpp:97: Unexpected error occurred. If you're running the latest version of the game you can help us solve the problem by posting the contents of the log file on the Factorio forums.
Please also include the save file(s), any mods you may be using, and any steps you know of to reproduce the crash.
Using native(wrapped) libXi.so.6
Using native(wrapped) libXfixes.so.3
Using native(wrapped) libXss.so.1
Using native(wrapped) libXxf86vm.so.1
ksco@Monster:~/Documents/Factorio$
The address is probably from box64 itself, inside x64Run(...)
use addr2line -e /usr/local/bin/box4 -a 0x34b4c436
to be sure. But that probably wont help much to found the actual root cause.
I suspect it's a structure thta have a different alignment on rv64 than x86_64 (or Arm64), but no idea which one. Also, strange that it's running the interpretor at this place, and not the dynarec.
Because I disabled Dynarec (see first line of the log). I'm not sure Factorio can work on ARM64 side too, no device to verify that. Factorio free demo works better than this (it failed at the loading screen, which I think is an opcode problem), the steam version is what doesn't work at all.
Factorio 1.1.75 gog works fine on aarch64. (I can test the latest 1.1.80 within a day or two) 1.1.80 also works. FYI, https://github.com/ptitSeb/box86-compatibility-list/issues/284
Do you have the steam version (with Goldberg emulator)? Are you able to test it? I don’t own this game on gog.
I don't have steam version. I have gog and drm free version from the official game website. I don't have riscv board.
How can I send private message to you, do you have discord/irc/tg etc.? or is it ok to send you email as the gmail one in your git profile page?
Yeah, I have a tg account. Please send me an email.
Confirmed, the issue of Factorio is unique to the Steam version, the official site full version works just like the demo version.
Void Scrappers, v1.37 (64503), Linux x64, GOG, Engine: Defold
Box64 with Dynarec v0.2.7 1c7e620 Rock 5B, LFS, Kernel rk-6.1-rkr1-panthor-v6, Mesa 24.1.0, Gnome 46
# export LC_ALL=C
# export TERM=xterm
export PAN_MESA_DEBUG=gl3
box64 ./"VoidScrappers.x86_64"
Error Log,
`PAN_MESA_DEBUG=gl3 BOX64_SHOWSEGV=1 BOX64_SHOWBT=1 BOX64_ROLLING_LOG=1 BOX64_DYNAREC_MISSING=1 box64 ./"VoidScrappers.x86_64"`
```bash
rico [ /opt/games/void_scrappers ]$ PAN_MESA_DEBUG=gl3 BOX64_SHOWSEGV=1 BOX64_SHOWBT=1 BOX64_ROLLING_LOG=1 BOX64_DYNAREC_MISSING=1 box64 ./"VoidScrappers.x86_64"
Rolling log, showing last 16 function call on signals
Dynarec will print missing opcodes
Show Segfault signal even if a signal handler is present
Show a Backtrace when a Segfault signal is caught
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS SHA1 SHA2 PageSize:4096 Running on Cortex-A55 Cortex-A76 with 8 Cores
Will use Hardware counter measured at 24.0 MHz emulating 3.0 GHz
Params database has 66 entries
Box64 with Dynarec v0.2.7 1c7e620 built on Apr 27 2024 16:14:08
BOX64: Detected 48bits at least of address space
Counted 62 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/
BOX64 BIN PATH: ./:bin/:/opt/rustc/bin/:/usr/local/bin/:/usr/bin/:/opt/ant/bin/:/opt/jdk/bin/:/opt/bin/
Looking for ./VoidScrappers.x86_64
Rename process to "VoidScrappers.x86_64"
Using emulated libGalaxy64.so
Using native(wrapped) libopenal.so.1
Using native(wrapped) libXext.so.6
Using native(wrapped) libX11.so.6
Using native(wrapped) libxcb.so.1
Using native(wrapped) libXau.so.6
Using native(wrapped) libXdmcp.so.6
Using native(wrapped) libdl.so.2
Using native(wrapped) libXi.so.6
Using native(wrapped) libGL.so.1
Using native(wrapped) libGLU.so.1
Using native(wrapped) libpthread.so.0
Using native(wrapped) libm.so.6
Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6
Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0
Registered aabb Extension
0xffffaa9412ec: Dynarec stopped because of x64 Opcode 1F 20 03 D5 FD 7B BE A9 FD 03 00 91 F3 53 01
Last calls
5909|0x584d5f: Calling memcmp(0x717910, 0x6A2A8B28, 0x20, ...) => return 0x0
5909|0x58d813: Calling strlen("__script_main_thread") => return 0x14
5909|0x584d5f: Calling memcmp(0x716DEA, 0x6A2975B8, 0x14, ...) => return 0x0
5909|0x58da58: Calling strlen("__get_url") => return 0x9
5909|0x584d5f: Calling memcmp(0x7178E6, 0x6A2A6C48, 0x9, ...) => return 0x0
5909|0x58d813: Calling strlen("url") => return 0x3
5909|0x584d5f: Calling memcmp(0x719898, 0x6A29AE28, 0x3, ...) => return 0x0
5909|0x601249: Calling strlen("acquire_input_focus") => return 0x13
5909|0x61e940: Calling pthread_spin_lock(0x56842FD8, 0x728E00, 0x85F120, ...) => return 0x0
5909|0x61e9ec: Calling pthread_spin_unlock(0x56842FD8, 0x100, 0x5E, ...) => return 0x0
5909|0x61f78b: Calling pthread_mutex_lock(0x57B0FFA0, 0x100, 0x5E, ...) => return 0x0
5909|0x61eb51: Calling memcpy(0x5CBC82E0, 0xFFFFABACBA80, 0x1, ...) => return 0x5CBC82E0
5909|0x61f81b: Calling pthread_mutex_unlock(0x57B0FFA0, 0xFFFFABACBA80, 0x1, ...) => return 0x0
5909|0x61eba6: Calling pthread_spin_lock(0x56842FD8, 0xFFFFABACBA80, 0x1, ...) => return 0x0
5909|0x61ebbd: Calling pthread_spin_unlock(0x56842FD8, 0xFFFFABACBA80, 0x1, ...) => return 0x0
5909|0x584d5f: Calling memcmp(0x717910, 0x6A2A8B28, 0x20, ...) => return 0x0
NativeBT: ./VoidScrappers.x86_64() [0x34a155b0]
NativeBT: linux-vdso.so.1(__kernel_rt_sigreturn+0) [0xffffabdba7ac]
NativeBT: ./VoidScrappers.x86_64() [0x34f85d98]
NativeBT: ./VoidScrappers.x86_64() [0x349eeab8]
NativeBT: ./VoidScrappers.x86_64(my___libc_start_main+0x23c) [0x34a01dbc]
NativeBT: ./VoidScrappers.x86_64() [0x34a47a7c]
NativeBT: ./VoidScrappers.x86_64() [0x349fd830]
NativeBT: ./VoidScrappers.x86_64() [0x34f84cb0]
NativeBT: ./VoidScrappers.x86_64() [0x349e97b8]
NativeBT: ./VoidScrappers.x86_64() [0x349e4740]
NativeBT: /usr/lib/libc.so.6(+0x28444) [0xffffabbd8444]
NativeBT: /usr/lib/libc.so.6(__libc_start_main+0x98) [0xffffabbd8518]
NativeBT: ./VoidScrappers.x86_64(_start+0x30) [0x349e47b0]
EmulatedBT: ??? [0xffffaa9412e4]
5909|SIGSEGV @0x34f85d98 (???(./VoidScrappers.x86_64+0x785d98)) (x64pc=0xffffaa9412e4/???:"???", rsp=0xffffabacc208, stack=0xffffab2d0000:0xffffabad0000 own=(nil) fp=0x56a205e0), for accessing 0x8a5a25df (code=1/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=0x678bf0
RSP-0x20:0x0000000000000000 RSP-0x18:0x000000006a290380 RSP-0x10:0x00000000005a660d RSP-0x08:0x000000006a290380
RSP+0x00:0x00000000006de5b9 RSP+0x08:0x0000000057d49fe3 RSP+0x10:0x000000006a290380 RSP+0x18:0x0000000057d49fe3
RAX:0x0000ffffaa9412e0 RCX:0x0000000000000004 RDX:0x000000006a3b0de0 RBX:0x000000006a290380
RSP:0x0000ffffabacc208 RBP:0x0000000056a205e0 RSI:0x0000000002400007 RDI:0x0000ffffaaa642f8
R8:0x000000006a2b00a0 R9:0x00000000007d66a0 R10:0x000000006a2a5130 R11:0xfffffffffffffff7
R12:0x0000000000000000 R13:0x0000000000000000 R14:0x000000006a291370 R15:0x0000000000696ee0
ES:0x002b CS:0x0033 SS:0x002b DS:0x002b FS:0x0043 GS:0x0053
INFO:CRASH: Successfully wrote Crashdump to file: /home/rico/.Defold/_crash
ERROR:CRASH: CALL STACK:
ERROR:CRASH: /opt/games/void_scrappers/VoidScrappers.x86_64+2789f5 [0x6789f5]
ERROR:CRASH: box64(ExitEmulation+0) [0x10080]
ERROR:CRASH: ??? [0x56a21b00]
ERROR:CRASH:
5909|Double SIGSEGV (code=1, pc=0x34f85d98, addr=0x8a5a25df, prot=00)!
Sigfault/Segbus while quitting, exiting silently
Description
Void Scrappers, v1.37 (64503), Linux x64, GOG, Engine: Defold
Box64 with Dynarec v0.2.3 1d98aa5
Rock 5B, LFS, BSP kernel 5.10.160+ rkr4, Gnome 44.1 PAN_MESA_DEBUG=gofaster,gl3 1080p, default game setting
NOT working.
Tested on
Rock 5B, LFS, BSP kernel 5.10.160+ rkr4, Gnome 44.1 PAN_MESA_DEBUG=gofaster,gl3 1080p, default game setting
Status
Previous behavior:
NOT working. https://github.com/ptitSeb/box86-compatibility-list/issues/269
Current behavior:
NOT working. Unimplemented Opcode (20 00 40 F9)
Screenshots
OpenGL
Additional Information
https://www.gog.com/en/game/void_scrappers https://store.steampowered.com/app/2005210/Void_Scrappers/