[lug] A head scratcher for your weekend

Matt Bidwell mbidwell at gmail.com
Wed May 23 22:02:12 MDT 2018


Sorry for the delay in replying. Going to reply to the last two emails 
in one email.
OK, the suggestion to try another qt based program was a good one. 
Mythfrontend obviously also didn't work. Installed k3b, and it also gave 
the same library message.

The output of ldd against /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.10.1 
and /usr/lib/x86_64-linux-gnu/libQt5Core.so.5  is the same run by root 
or non root users. Nothing missing shows up.

I've rebooted a few times now. If only it could be that simple.

$ ls -alh /usr/lib/x86_64-linux-gnu/libQt5Core.so.5*
lrwxrwxrwx 1 root root   20 May 20 15:57 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5 -> libQt5Core.so.5.10.1
lrwxrwxrwx 1 root root   20 May 20 15:57 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.10 -> libQt5Core.so.5.10.1
-rw-r--r-- 1 root root 5.0M May 20 15:57 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.10.1


If you've read this far, you really wanted to see the redelf output
$ readelf -e /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
ELF Header:
   Magic:   7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00
   Class:                             ELF64
   Data:                              2's complement, little endian
   Version:                           1 (current)
   OS/ABI:                            UNIX - GNU
   ABI Version:                       0
   Type:                              DYN (Shared object file)
   Machine:                           Advanced Micro Devices X86-64
   Version:                           0x1
   Entry point address:               0x96740
   Start of program headers:          64 (bytes into file)
   Start of section headers:          5222704 (bytes into file)
   Flags:                             0x0
   Size of this header:               64 (bytes)
   Size of program headers:           56 (bytes)
   Number of program headers:         11
   Size of section headers:           64 (bytes)
   Number of section headers:         32
   Section header string table index: 31

Section Headers:
   [Nr] Name              Type             Address           Offset
        Size              EntSize          Flags  Link  Info  Align
   [ 0]                   NULL             0000000000000000  00000000
        0000000000000000  0000000000000000           0     0     0
   [ 1] .note.gnu.build-i NOTE             00000000000002a8  000002a8
        0000000000000024  0000000000000000   A       0     0     4
   [ 2] .gnu.hash         GNU_HASH         00000000000002d0  000002d0
        00000000000088a8  0000000000000000   A       3     0     8
   [ 3] .dynsym           DYNSYM           0000000000008b78  00008b78
        00000000000232f8  0000000000000018   A       4     1     8
   [ 4] .dynstr           STRTAB           000000000002be70  0002be70
        0000000000036080  0000000000000000   A       0     0     1
   [ 5] .gnu.version      VERSYM           0000000000061ef0  00061ef0
        0000000000002eea  0000000000000002   A       3     0     2
   [ 6] .gnu.version_d    VERDEF           0000000000064de0  00064de0
        00000000000001e0  0000000000000000   A       4    14     8
   [ 7] .gnu.version_r    VERNEED          0000000000064fc0  00064fc0
        0000000000000210  0000000000000000   A       4     7     8
   [ 8] .rela.dyn         RELA             00000000000651d0  000651d0
        0000000000017850  0000000000000018   A       3     0     8
   [ 9] .rela.plt         RELA             000000000007ca20  0007ca20
        0000000000001bc0  0000000000000018  AI       3    27     8
   [10] .init             PROGBITS         000000000007e5e0  0007e5e0
        0000000000000017  0000000000000000  AX       0     0     4
   [11] .plt              PROGBITS         000000000007e600  0007e600
        0000000000001290  0000000000000010  AX       0     0     16
   [12] .plt.got          PROGBITS         000000000007f890  0007f890
        0000000000000008  0000000000000008  AX       0     0     8
   [13] .text             PROGBITS         000000000007f8a0  0007f8a0
        00000000002c0b82  0000000000000000  AX       0     0     16
   [14] .fini             PROGBITS         0000000000340424  00340424
        0000000000000009  0000000000000000  AX       0     0     4
   [15] .rodata           PROGBITS         0000000000340440  00340440
        000000000012f888  0000000000000000   A       0     0     32
   [16] .interp           PROGBITS         000000000046fcd0  0046fcd0
        000000000000001c  0000000000000000   A       0     0     16
   [17] .eh_frame_hdr     PROGBITS         000000000046fcec  0046fcec
        000000000000eeac  0000000000000000   A       0     0     4
   [18] .eh_frame         PROGBITS         000000000047eb98  0047eb98
        000000000005a0b0  0000000000000000   A       0     0     8
   [19] .gcc_except_table PROGBITS         00000000004d8c48  004d8c48
        0000000000014ed7  0000000000000000   A       0     0     4
   [20] .note.ABI-tag     NOTE             00000000004edb20  004edb20
        0000000000000020  0000000000000000   A       0     0     4
   [21] .tbss             NOBITS           00000000006ee750  004ee750
        0000000000000010  0000000000000000 WAT       0     0     8
   [22] .init_array       INIT_ARRAY       00000000006ee750  004ee750
        0000000000000020  0000000000000008  WA       0     0     8
   [23] .fini_array       FINI_ARRAY       00000000006ee770  004ee770
        0000000000000010  0000000000000008  WA       0     0     8
   [24] .data.rel.ro      PROGBITS         00000000006ee780  004ee780
        000000000000ac60  0000000000000000  WA       0     0     32
   [25] .dynamic          DYNAMIC          00000000006f93e0  004f93e0
        00000000000002b0  0000000000000010  WA       4     0     8
   [26] .got              PROGBITS         00000000006f9690  004f9690
        0000000000000958  0000000000000008  WA       0     0     8
   [27] .got.plt          PROGBITS         00000000006fa000  004fa000
        0000000000000958  0000000000000008  WA       0     0     8
   [28] .data             PROGBITS         00000000006fa960  004fa960
        0000000000000664  0000000000000000  WA       0     0     32
   [29] .bss              NOBITS           00000000006fb000  004fafc4
        0000000000004000  0000000000000000  WA       0     0     64
   [30] .gnu_debuglink    PROGBITS         0000000000000000  004fafc4
        0000000000000034  0000000000000000           0     0     4
   [31] .shstrtab         STRTAB           0000000000000000  004faff8
        0000000000000131  0000000000000000           0     0     1
Key to Flags:
   W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
   L (link order), O (extra OS processing required), G (group), T (TLS),
   C (compressed), x (unknown), o (OS specific), E (exclude),
   l (large), p (processor specific)

Program Headers:
   Type           Offset             VirtAddr           PhysAddr
                  FileSiz            MemSiz              Flags  Align
   PHDR           0x0000000000000040 0x0000000000000040 0x0000000000000040
                  0x0000000000000268 0x0000000000000268  R      0x8
   INTERP         0x000000000046fcd0 0x000000000046fcd0 0x000000000046fcd0
                  0x000000000000001c 0x000000000000001c  R      0x10
       [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
   LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x00000000004edb40 0x00000000004edb40  R E    0x200000
   LOAD           0x00000000004ee750 0x00000000006ee750 0x00000000006ee750
                  0x000000000000c874 0x00000000000108b0  RW     0x200000
   DYNAMIC        0x00000000004f93e0 0x00000000006f93e0 0x00000000006f93e0
                  0x00000000000002b0 0x00000000000002b0  RW     0x8
   NOTE           0x00000000000002a8 0x00000000000002a8 0x00000000000002a8
                  0x0000000000000024 0x0000000000000024  R      0x4
   NOTE           0x00000000004edb20 0x00000000004edb20 0x00000000004edb20
                  0x0000000000000020 0x0000000000000020  R      0x4
   TLS            0x00000000004ee750 0x00000000006ee750 0x00000000006ee750
                  0x0000000000000000 0x0000000000000010  R      0x8
   GNU_EH_FRAME   0x000000000046fcec 0x000000000046fcec 0x000000000046fcec
                  0x000000000000eeac 0x000000000000eeac  R      0x4
   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x0000000000000000 0x0000000000000000  RW     0x10
   GNU_RELRO      0x00000000004ee750 0x00000000006ee750 0x00000000006ee750
                  0x000000000000b8b0 0x000000000000b8b0  R      0x1

  Section to Segment mapping:
   Segment Sections...
    00
    01     .interp
    02     .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version 
.gnu.version_d .gnu.version_r .rela.dyn .rela.plt .init .plt .plt.got 
.text .fini .rodata .interp .eh_frame_hdr .eh_frame .gcc_except_table 
.note.ABI-tag
    03     .init_array .fini_array .data.rel.ro .dynamic .got .got.plt 
.data .bss
    04     .dynamic
    05     .note.gnu.build-id
    06     .note.ABI-tag
    07     .tbss
    08     .eh_frame_hdr
    09
    10     .init_array .fini_array .data.rel.ro .dynamic .got

You will all be happy to know both the library and executable little 
endian.


I thought the beginning of the strace was pretty interesting:
execve("/usr/bin/mythbackend", ["/usr/bin/mythbackend"], 0x7fffc6393f30 
/* 19 vars */) = 0
brk(NULL)                               = 0x7faff5f4e000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or 
directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or 
directory)

.....
And here's the first appearance of the libQt library to the end of the 
end of the strace:
openat(AT_FDCWD, "/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT 
(No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 
-1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 
ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/local/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 
-1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 at g\t\0\0\0\0\0"..., 832) 
= 832
lseek(3, 5167904, SEEK_SET)             = 5167904
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
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or 
directory)
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)
stat("/lib/x86_64-linux-gnu/tls/x86_64/x86_64", 0x7fff9b396bc0) = -1 
ENOENT (No such file or directory)
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)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff9b396bc0) = -1 ENOENT (No 
such file or directory)
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)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff9b396bc0) = -1 ENOENT (No 
such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls", 0x7fff9b396bc0) = -1 ENOENT (No such 
file or directory)
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)
stat("/lib/x86_64-linux-gnu/x86_64/x86_64", 0x7fff9b396bc0) = -1 ENOENT 
(No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7fff9b396bc0) = -1 ENOENT (No 
such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7fff9b396bc0) = -1 ENOENT (No 
such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=16384, 
...}) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5", 
O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 at g\t\0\0\0\0\0"..., 832) 
= 832
lseek(3, 5167904, SEEK_SET)             = 5167904
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
close(3)                                = 0
openat(AT_FDCWD, "/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT 
(No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = 
-1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libQt5Core.so.5", O_RDONLY|O_CLOEXEC) = -1 
ENOENT (No such file or directory)
writev(2, [{iov_base="/usr/bin/mythbackend", iov_len=20}, {iov_base=": 
", iov_len=2}, {iov_base="error while loading shared libra"..., 
iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libQt5Core.so.5", 
iov_len=15}, {iov_base=": ", iov_len=2}, {iov_base="cannot open shared 
object file", iov_len=30}, {iov_base=": ", iov_len=2}, {iov_base="No 
such file or directory", iov_len=25}, {iov_base="\n", iov_len=1}], 10) = 135
exit_group(127)                         = ?
+++ exited with 127 +++


Sorry for the length. Thanks for the help. -Matt



On 05/21/2018 06:49 PM, Louis Krupp wrote:
> On the off chance that there's something in the library that the system 
> doesn't like, can you do this?
> 
> readelf -e <path to library>
> 
> And would it be too much trouble to capture more of the stat calls?
> 
> And -- last -- on the off chance that something has changed, what does 
> this do now?:
> 
> ls -alh /usr/lib/x86_64-linux-gnu/libQt5Core.so.5*
> 
> Louis
> 
> 
> 
> On Mon, May 21, 2018 at 5:34 AM, Matt Bidwell <mbidwell at gmail.com 
> <mailto:mbidwell at gmail.com>> wrote:
> 
>     It appears to stat it many times. Here's the last one:
>     stat("/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=16384,
>     ...}) = 0
>     openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5",
>     O_RDONLY|O_CLOEXEC) = 3
>     read(3,
>     "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 at g\t\0\0\0\0\0"...,
>     832) = 832
>     lseek(3, 5167904, SEEK_SET)             = 5167904
>     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
>     close(3)                                = 0
> 
>     Here's wht ldconfig -p get's me.
>     # ldconfig -p | grep libQt5Core.so.5
>              libQt5Core.so.5 (libc6,x86-64, OS ABI: Linux 3.17.0) =>
>     /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
> 
>     I really do appreciate the help. There were some Qt package updates
>     this morning including libqt5core5a. Updating them didn't fix
>     anything but I may dig through the change logs later. -Matt
> 
> 
>     On 05/20/2018 08:30 PM, Davide Del Vento wrote:
> 
>         In the strace output, is there any attempt to load any of the
>         /usr/lib/x86_64-linux-gnu/libQt5Core.so.5* ?
>         If so, you should get the clue we're after.
>         If not, that's the weirdness, especially if it shows (succeeding)
>         attempts to load /usr/lib/x86_64-linux-gnu/libQt5Script.so.5 as the
>         ldd suggests.
> 
>         On Sun, May 20, 2018 at 6:49 PM, Zan Lynx <zlynx at acm.org
>         <mailto:zlynx at acm.org>> wrote:
> 
>             On 5/20/2018 4:46 PM, Matt Bidwell wrote:
> 
> 
>                 openat(AT_FDCWD, "/usr/lib/libQt5Core.so.5",
>                 O_RDONLY|O_CLOEXEC) = 3
> 
> 
> 
>             This one is not in the 64-bit library location so it is
>             rejected for loading
>             into a 64-bit program. At least if it is following the usual
>             Linux
>             distribution file locations.
> 
>             --
>                               Knowledge is Power -- Power Corrupts
>                                       Study Hard -- Be Evil


More information about the LUG mailing list