build icon indicating copy to clipboard operation
build copied to clipboard

[Feature Request]: mention Orange Pi CM4 in Orange Pi 3B profile

Open ssinyagin opened this issue 8 months ago • 7 comments

Which feature would you like to have?

The latest Bookworm image for Orange Pi 3B has successfully booted on Orange Pi CM4. It will be great to have the mentioning of CM4 in the config/boards/orangepi3b.csc, or maybe it's worth creating a new CSC for CM4.

So far, everything looks to be working fine: WiFi and Bluetooth, USB are recognized. Also, a two-GigE baseboard by Waweshare is showing two ports, as expected.

Funding

ssinyagin avatar May 09 '25 23:05 ssinyagin

This error "Fatal error: futex robust_list not initialized by pthreads" is a steam error when the mutex don't have the expected glibc behaviour. You are on a non-standard system here, it seems.

ptitSeb avatar Mar 11 '25 08:03 ptitSeb

This error "Fatal error: futex robust_list not initialized by pthreads" is a steam error when the mutex don't have the expected glibc behaviour. You are on a non-standard system here, it seems.

My host uses the ubuntu 22.04 image provided by Orangepi, and the docker container uses the official ubuntu 20.04 image of arm64/v8 platform. Can this error be resolved by adding some dependencies?

yyf-0404 avatar Mar 11 '25 09:03 yyf-0404

This error "Fatal error: futex robust_list not initialized by pthreads" is a steam error when the mutex don't have the expected glibc behaviour. You are on a non-standard system here, it seems.

My host uses the ubuntu 22.04 image provided by Orangepi, and the docker container uses the official ubuntu 20.04 image of arm64/v8 platform. Can this error be resolved by adding some dependencies?

Not really. It's steam checking if an offset in some inner syscall structure is the expected value... You can use box32 option of box64, instead of box86, as it's designed to ignore/workaround this error. But box32 is still experimental and so expect more crashes compare to box86. It should run SteamCMD fine tho.

ptitSeb avatar Mar 11 '25 09:03 ptitSeb

This error "Fatal error: futex robust_list not initialized by pthreads" is a steam error when the mutex don't have the expected glibc behaviour. You are on a non-standard system here, it seems.

My host uses the ubuntu 22.04 image provided by Orangepi, and the docker container uses the official ubuntu 20.04 image of arm64/v8 platform. Can this error be resolved by adding some dependencies?

Not really. It's steam checking if an offset in some inner syscall structure is the expected value... You can use box32 option of box64, instead of box86, as it's designed to ignore/workaround this error. But box32 is still experimental and so expect more crashes compare to box86. It should run SteamCMD fine tho.

What should I do to enable box32 option of box64? I didn't find it in box64/docs/compile.md. And how to configure binfmts for box32 in the docker container after installing?

yyf-0404 avatar Mar 11 '25 09:03 yyf-0404

Mmm, indeed, I need to add some hint there on how to add box32.

You can use ccmake . from the build folder to alter config option -you might need to sudo apt install cmake-curses-gui first). You can then add BOX32 and BOX32_BINFMT options (and then press 'c' to configure and 'g' to generate the new makefile).

ptitSeb avatar Mar 11 '25 10:03 ptitSeb

Mmm, indeed, I need to add some hint there on how to add box32.

You can use ccmake . from the build folder to alter config option -you might need to sudo apt install cmake-curses-gui first). You can then add BOX32 and BOX32_BINFMT options (and then press 'c' to configure and 'g' to generate the new makefile).

I've added the box32 option and removed box86, but a new error Segmentation fault appears

root@orangepiaipro-20t:/# ./root/steamcmd/steamcmd.sh
[BOX64] Box64 with Dynarec v0.3.5 d4a539b9 built on Mar 11 2025 18:32:36
[BOX64] Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS SHA1 SHA2
[BOX64] Running on unknown aarch64 cpu with 4 cores, pagesize: 4096
[BOX64] Will use hardware counter measured at 48.0 MHz emulating 3.0 GHz
[BOX64] steamcmd detected
[BOX64] Detected 48bits at least of address space
[BOX64] Counted 13 Env var
[BOX64] Library search path:
[BOX64] Binary search path: ./:bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/
[BOX64] Looking for /root/steamcmd/linux32/steamcmd
[BOX32] Using Box32 to load 32bits elf
[BOX32] Memory higher than 32bits reserved
[BOX32] Rename process to "steamcmd"
[BOX32] Using native(wrapped) libdl.so.2
[BOX32] Using native(wrapped) librt.so.1
[BOX32] Using native(wrapped) libm.so.6
[BOX32] Using native(wrapped) libpthread.so.0
[BOX32] Using native(wrapped) libc.so.6
[BOX32] Using native(wrapped) ld-linux.so.2
[BOX32] FillBlock triggered a segfault at 0xffffffffffffffff from 0x34ad6778
[BOX32] FillBlock at 0x401c6000 triggered a segfault, canceling
[BOX32] 0032|SIGSEGV @0x34ad6778 (???(/root/steamcmd/linux32/steamcmd+0x2d6778)) (x64pc=0x401c6032/"/root/steamcmd/linux32/steamcmd + 0x1c6000 + 0x32", rsp=0x3080f750, stack=0x30010000:0x30810000 own=(nil) fp=(nil)), for accessing 0xffffffffffffffff (code=1/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=(nil)
RSP-0x20:0x0000000000000000 RSP-0x18:0x0000000000000000 RSP-0x10:0x0000000000000000 RSP-0x08:0x0000000000000000
RSP+0x00:0x30000080401c6010 RSP+0x08:0x000000013080f75c RSP+0x10:0x0000000130000080 RSP+0x18:0x000000003080f835
RAX:0x0000000000000001 RCX:0x000000003080f768 RDX:0x0000000030000080 RBX:0x000000003080f768
RSP:0x000000003080f750 RBP:0x0000000000000000 RSI:0x0000000000000001 RDI:0x0000000000000000
 R8:0x0000000000000000  R9:0x0000000000000000 R10:0x0000000000000000 R11:0x0000000000000000
R12:0x0000000000000000 R13:0x0000000000000000 R14:0x0000000000000000 R15:0x0000000000000000
ES:0x002b CS:0x0023 SS:0x002b DS:0x002b FS:0x0000 GS:0x0033  x86opcode=8B 1C 24 C3 90 90 00 00 (opcode=f9000281)
./root/steamcmd/steamcmd.sh: line 76:    32 Segmentation fault      (core dumped) $DEBUGGER "$STEAMEXE" "$@"

When I run steamcmd repeatedly, Segmentation fault increases

yyf-0404 avatar Mar 11 '25 11:03 yyf-0404

I don't reproduce the issue on my side

Image

It just update and start correctly. The segfault you pasted doesn't make sense to me: RSP is correct, the opcode is a mov ebx, [esp] and yet there is an access to 0xffffffffffffffff wich, realy, doesn't make sense. Can you run with BOX64_SHOWBT=1 also so might have a bit more details?

ptitSeb avatar Mar 11 '25 11:03 ptitSeb

I ran a new docker container, reinstalled box64, box32 and steamcmd ,add run with BOX64_SHOWBT=1, nothing seemed to have changed.

root@orangepiaipro-20t:~/steamcmd# BOX64_SHOWBT=1 ./steamcmd.sh
[BOX64] Box64 with Dynarec v0.3.5 fb701d8e built on Mar 11 2025 20:08:26
[BOX64] Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS SHA1 SHA2
[BOX64] Running on unknown aarch64 cpu with 4 cores, pagesize: 4096
[BOX64] Will use hardware counter measured at 48.0 MHz emulating 3.0 GHz
[BOX64] steamcmd detected
[BOX64] Detected 48bits at least of address space
[BOX64] Counted 15 Env var
[BOX64] Library search path:
[BOX64] Binary search path: ./:bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/
[BOX64] Looking for /root/steamcmd/linux32/steamcmd
[BOX64] BOX64ENV: Variables overridden via env and/or RC file:
        BOX64_SHOWBT=1
[BOX32] Using Box32 to load 32bits elf
[BOX32] Memory higher than 32bits reserved
[BOX32] Rename process to "steamcmd"
[BOX32] Using native(wrapped) librt.so.1
[BOX32] Using native(wrapped) libdl.so.2
[BOX32] Using native(wrapped) libpthread.so.0
[BOX32] Using native(wrapped) libm.so.6
[BOX32] Using native(wrapped) libc.so.6
[BOX32] Using native(wrapped) ld-linux.so.2
[BOX32] FillBlock triggered a segfault at 0xffffffffffffffff from 0x34ad6778
[BOX32] FillBlock at 0x4002a7f4 triggered a segfault, canceling
[BOX32] EmulatedBT: /root/steamcmd/linux32/steamcmd(_start+32) [0x4002a826]
[BOX32] 0031|SIGSEGV @0x34ad6778 (???(/root/steamcmd/linux32/steamcmd+0x2d6778)) (x64pc=0x4002a826/"/root/steamcmd/linux32/steamcmd/_start + 0x32", rsp=0x3080f730, stack=0x30010000:0x30810000 own=(nil) fp=(nil)), for accessing 0xffffffffffffffff (code=1/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=(nil)
RSP-0x20:0x0000000000000000 RSP-0x18:0x0000000000000000 RSP-0x10:0x0000000000000000 RSP-0x08:0x0000000000000000
RSP+0x00:0x300000804002a804 RSP+0x08:0x000000013080f73c RSP+0x10:0x000000003080f810 RSP+0x18:0x3080f83f3080f830
RAX:0x0000000000000001 RCX:0x000000003080f740 RDX:0x0000000030000080 RBX:0x000000003080f740
RSP:0x000000003080f730 RBP:0x0000000000000000 RSI:0x0000000000000001 RDI:0x0000000000000000
 R8:0x0000000000000000  R9:0x0000000000000000 R10:0x0000000000000000 R11:0x0000000000000000
R12:0x0000000000000000 R13:0x0000000000000000 R14:0x0000000000000000 R15:0x0000000000000000
ES:0x002b CS:0x0023 SS:0x002b DS:0x002b FS:0x0000 GS:0x0033  x86opcode=8B 1C 24 C3 90 90 90 90 (opcode=f9000281)
./steamcmd.sh: line 38:    31 Segmentation fault      (core dumped) $DEBUGGER "$STEAMEXE" "$@"

yyf-0404 avatar Mar 11 '25 12:03 yyf-0404

I still don't understand what could be happening there...

Can run steamcmd with gdb? and do "bt" when the segfault happens?

ptitSeb avatar Mar 11 '25 13:03 ptitSeb

@ptitSeb here you go

(gdb) start
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Temporary breakpoint 1 (-qualified main if $_inferior == 1) pending.
Starting program: /home/steam/.local/share/Steam/steamcmd/linux32/steamcmd 
warning: Error disabling address space randomization: Operation not permitted
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Failed to read a valid object file image from memory.
[New LWP 936]
WARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'. International characters may not work.
Redirecting stderr to '/root/Steam/logs/stderr.txt'
Logging directory: '/root/Steam/logs'
[New LWP 937]
[  0%] Checking for available updates...
[New LWP 938]
[----] Verifying installation...
[LWP 937 exited]
UpdateUI: skip show logo
Steam Console Client (c) Valve Corporation - version 1741737873
-- type 'quit' to exit --
Loading Steam API...[New LWP 939]
[New LWP 940]
[New LWP 941]
[New LWP 942]
[LWP 941 exited]
[LWP 942 exited]
[New LWP 943]
[New LWP 944]
[LWP 944 exited]
[New LWP 945]
IPC function call IClientUtils::GetSteamRealm took too long: 182 msec
Fatal error: futex robust_list not initialized by pthreads

Thread 6 "IPC:CSteamEngin" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 940]
0x0000ffff8c462dd8 in ?? ()
(gdb) bt
#0  0x0000ffff8c462dd8 in ?? ()
#1  0x0000ffff8a81d730 in ?? ()
#2  0x0000000000000002 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

amitojsingh366 avatar Mar 19 '25 02:03 amitojsingh366

Update: using box86 v0.3.6 prevents this error. There is a new error which is probably a path issue:

Steam Console Client (c) Valve Corporation - version 1741737873
-- type 'quit' to exit --
Loading Steam API...Error: Symbol execvpe not found, cannot apply R_386_JMP_SLOT 0x66bcaea8 (0xbd6540) in /root/steamcmd/linux32/steamclient.so
Error: relocating Plt symbols in elf steamclient.so
dlmopen steamclient.so failed: Cannot dlopen("steamclient.so"/0x63ed8cc8, 2)

Error: Symbol execvpe not found, cannot apply R_386_JMP_SLOT 0x66bcaea8 (0xbd6540) in /root/steamcmd/linux32/steamclient.so
Error: relocating Plt symbols in elf steamclient.so
dlmopen steamclient.so failed: Cannot dlopen("steamclient.so"/0x63ed8cc8, 2)

src/common/steam/client_api.cpp (589) : ClientAPI_InitGlobalInstance: InternalAPI_Init_Internal failed, most likely because you are missing a 32-bit dependency of steamclient.so (the Steam client is a 32-bit app).

FAILED (1)

amitojsingh366 avatar Mar 19 '25 04:03 amitojsingh366