th-x86_64: strange runtime linker failure
Jakub Bogusz
qboosh at pld-linux.org
Tue Nov 10 18:45:10 CET 2020
I'm trying to debug libgda5 build failure:
| + javac getsp.java
| javac: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
| error: Bad exit status from /tmp/B.4ZeOy1/BUILD/tmp/rpm-tmp.33887 (%build)
/usr/bin/javac is a symlink to /usr/lib64/jvm/icedtea8-3.17.0/bin/javac and ldd shows:
| linux-vdso.so.1 (0x00007fff6bad1000)
| libjli.so => /usr/lib64/jvm/icedtea8-3.17.0/bin/../lib/amd64/jli/libjli.so (0x00007f5c2ce8f000)
| libc.so.6 => /lib64/libc.so.6 (0x00007f5c2cc5b000)
| libz.so.1 => /lib64/libz.so.1 (0x00007f5c2cc41000)
| libdl.so.2 => /lib64/libdl.so.2 (0x00007f5c2cc3b000)
| libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5c2cc1a000)
| /lib64/ld-linux-x86-64.so.2 (0x00007f5c2cea7000)
libjli.so is found by $ORIGIN/../lib/amd64/jli RPATH.
But:
| $ /usr/lib64/jvm/icedtea8-3.17.0/bin/javac -help
| /usr/lib64/jvm/icedtea8-3.17.0/bin/javac: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
`strace -f /usr/lib64/jvm/icedtea8-3.17.0/bin/javac -help` shows something strange:
| # src : https://buildlogs.pld-linux.org/pld/th/x86_64/FAIL/command,bd4d8466-aafa-4f38-ab38-45d3dd906832.bz2
| # date : 2020/11/10 18:21:26
| execve("/usr/lib64/jvm/icedtea8-3.17.0/bin/javac", ["/usr/lib64/jvm/icedtea8-3.17.0/b"..., "-help"], 0x7ffd2c6b3340 /* 33 vars */) = 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| brk(NULL) = 0x56350d9df000
| arch_prctl(0x3001 /* ARCH_??? */, 0x7fff5b7713e0) = -1 EINVAL (Invalid argument)
| readlink("/proc/self/exe", "/usr/bin/rsync", 4096) = 14
^^^^^^^^^^^^^^^^ ???
| mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6f30ec0000
| access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
| openat(AT_FDCWD, "/usr/bin/../lib/amd64/jli/tls/x86_64/x86_64/libjli.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
^^^^^^^^
| stat("/usr/bin/../lib/amd64/jli/tls/x86_64/x86_64", 0x7fff5b770580) = -1 ENOENT (No such file or directory)
^^^^^^^^
execve shows proper path, but why readlink("/proc/self/exe") returns
"/usr/bin/rsync" and $ORIGIN is resolved as /usr/bin instead of
/usr/lib64/jvm/icedtea8-3.17.0/bin ???
--
Jakub Bogusz http://qboosh.pl/
More information about the pld-devel-en
mailing list