openziti / zrok

Geo-scale, next-generation peer-to-peer sharing platform built on top of OpenZiti.
https://zrok.io
Apache License 2.0
2.43k stars 93 forks source link

SIGFPE Floating-point exception on armv7l #654

Closed mced closed 3 weeks ago

mced commented 2 months ago

Context; I'm on a constraint Linux environment without lddconfig.

$ uname -a
Linux 6.1.30 #1 SMP PREEMPT Tue Mar 26 09:25:25 UTC 2024 armv7l GNU/Linux
$ ./zrok version
-sh: ./zrok: not found

After reading those two links: https://github.com/openziti/zrok/issues/642 https://openziti.discourse.group/t/zrok-share-failes-to-install-on-raspberry-pi-4/2198/8

I considered to symlink the file /lib/ld-linux-armhf.so.3 to /lib/ld-linux.so.3.

$ sudo ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3

But

$ ./zrok version
Floating point exception

$ strace ./zrok version
execve("./zrok", ["./zrok", "version"], 0xbee10de4 /* 13 vars */) = 0
brk(NULL)                               = 0x4995000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=38528, ...}) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fb0000
mmap2(NULL, 51116, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fa3000
mmap2(0xb6fac000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0xb6fac000
mmap2(0xb6fae000, 6060, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6fae000
close(3)                                = 0
openat(AT_FDCWD, "/lib/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=5404, ...}) = 0
mmap2(NULL, 8236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fa0000
mmap2(0xb6fa1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6fa1000
close(3)                                = 0
openat(AT_FDCWD, "/lib/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=7584, ...}) = 0
mmap2(NULL, 8236, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f9d000
mmap2(0xb6f9e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6f9e000
close(3)                                = 0
openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\271'\2\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=1069472, ...}) = 0
mmap2(NULL, 1106944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e8e000
mmap2(0xb6f90000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x101000) = 0xb6f90000
mmap2(0xb6f93000, 37888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f93000
close(3)                                = 0
openat(AT_FDCWD, "/lib/ld-linux.so.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0H\365\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=149332, ...}) = 0
mmap2(NULL, 125532, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e6f000
mmap2(0xb6e8b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0xb6e8b000
close(3)                                = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e6d000
set_tls(0xb6e6d520)                     = 0
set_tid_address(0xb6e6d088)             = 26986
set_robust_list(0xb6e6d08c, 12)         = 0
rseq(0xb6e6d500, 0x20, 0, 0xe7f5def3)   = 0
mprotect(0xb6e8b000, 8192, PROT_READ)   = 0
mprotect(0xb6f90000, 8192, PROT_READ)   = 0
mprotect(0xb6f9e000, 4096, PROT_READ)   = 0
mprotect(0xb6fa1000, 4096, PROT_READ)   = 0
mprotect(0xb6fac000, 4096, PROT_READ)   = 0
mprotect(0x4853000, 8192, PROT_READ)    = 0
mprotect(0xb6fce000, 8192, PROT_READ)   = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
gettid()                                = 26986
getpid()                                = 26986
tgkill(26986, 26986, SIGFPE)            = 0
--- SIGFPE {si_signo=SIGFPE, si_code=SI_TKILL, si_pid=26986, si_uid=0} ---
+++ killed by SIGFPE +++
Floating point exception
michaelquigley commented 1 month ago

You might need to build zrok specifically for your platform. If zrok version is failing, I would assume this is a significant binary incompatibility with your platform.

vamtic commented 1 month ago

same

qrkourier commented 3 weeks ago

I'm looking for someone with this issue on a RasPi to build the 32bit zrok binary, copy it to the RasPi, and see if it works.

Build instructions: https://openziti.discourse.group/t/zrok-on-raspberry-says-floating-point-exception/2869/3?u=qrkourier