Re: qtbase5-dev-tools BUG - error while loading shared libraries: libQt5Core.so.5
Hi Lisandro,
On Tue, Jun 05, 2018 at 04:05:07PM -0300, Lisandro Damián Nicanor Pérez Meyer wrote:
> El lunes, 4 de junio de 2018 17:25:40 -03 Ervin Hegedüs escribió:
> [snip]
> > But the build system is an LXC container, and I couldn't get it
> > from scratch - I had to install then a stable release, and
> > upgrade the full system.
>
> Some days ago I've read someone having problems with Qt and dbus on an LXC
> container.
>
> Problem is, how can one debug this?
some additional info's:
strace output on Qemu system (filtered to libQt5Core with grep):
(this is the working copy of my SID)
1296 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 3
1296 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@g\t\0\0\0\0\0@\0\0\0\0\0\0\0000\261O\0\0\0\0\0\0\0\0\0@\0008\0\v\0@\0\0\37\0\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0h\2\0\0\0\0\0\0h\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\320\374F\0\0\0\0\0\320\374F\0\0\0\0\0\320\374F\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\333N\0\0\0\0\0@\333N\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0P\347N\0\0\0\0\0P\347n\0\0\0\0\0"..., 832) = 832
1296 lseek(3, 5167904, SEEK_SET) = 5167904
1296 read(3, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\3\0\0\0\21\0\0\0\0\0\0\0", 32) = 32
1296 fstat(3, {st_mode=S_IFREG|0644, st_size=5224752, ...}) = 0
1296 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa9efcc9000
1296 mmap(NULL, 7335936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa9ef135000
1296 mprotect(0x7fa9ef623000, 2097152, PROT_NONE) = 0
1296 mmap(0x7fa9ef823000, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4ee000) = 0x7fa9ef823000
1296 mmap(0x7fa9ef830000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa9ef830000
1296 close(3) = 0
1296 writev(1, [{iov_base="\t", iov_len=1}, {iov_base="libQt5Core.so.5", iov_len=15}, {iov_base=" => ", iov_len=4}, {iov_base="/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", iov_len=41}, {iov_base=" (0x", iov_len=4}, {iov_base="00007fa9ef135000", iov_len=16}, {iov_base=")\n", iov_len=2}], 7) = 83
1294 read(3, "\tlibQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fa9ef135000)\n\tlibstdc++.so.6 => /usr/lib/x86_64-linux-gnu/", 128) = 128
1294 write(1, "\tlinux-vdso.so.1 (0x00007fffc5fdc000)\n\tlibQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fa9ef135000)\n\tlibstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa9eedb4000)\n\tlibc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007"..., 1024) = 1024
strace output on LXC system (filtered to libQt5Core with grep):
(this one isn't working)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 3
1107 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@g\t\0\0\0\0\0@\0\0\0\0\0\0\0000\261O\0\0\0\0\0\0\0\0\0@\0008\0\v\0@\0\0\37\0\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0h\2\0\0\0\0\0\0h\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\320\374F\0\0\0\0\0\320\374F\0\0\0\0\0\320\374F\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\333N\0\0\0\0\0@\333N\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0P\347N\0\0\0\0\0P\347n\0\0\0\0\0"..., 832) = 832
1107 lseek(3, 5167904, SEEK_SET) = 5167904
1107 read(3, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\3\0\0\0\21\0\0\0\0\0\0\0", 32) = 32
1107 close(3) = 0
1107 openat(AT_FDCWD, "tls/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 3
1107 openat(AT_FDCWD, "/lib/tls/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/tls/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/tls/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/x86_64/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 openat(AT_FDCWD, "/usr/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
1107 writev(1, [{iov_base="\t", iov_len=1}, {iov_base="libQt5Core.so.5", iov_len=15}, {iov_base=" => not found\n", iov_len=14}], 3) = 30
1105 <... read resumed> "\tlibQt5Core.so.5 => not found\n\tlibstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb1a9277000)\n", 128) = 111
1105 write(1, "\tlibQt5Core.so.5 => not found\n", 30) = 30
in first case, the loader founds the Qt5Core lib at first try,
but in the second case, it looks up manyother directories. I've
checked the content of /etc/ld.so.conf.d, absolutely same.
I don't know, why it looks at several places.
As you can see, the loader loads same bytes, but in first case,
after it finishes the read, makes an fstat() call, then an
mmap(), then it closes the file.
In the second case, after the read, it closes the .so
immediatelly.
That's what I found, but the cause is unknown.
Thanks,
a.
Reply to: