2018-02-24 8:59 GMT+01:00 Chris Marusich : > Hi, > > Recently, I've noticed that Vinagre segfaults when I initiate a > connection. To reproduce, try doing the following: > > 1) Install Vinagre. > 2) Try to connect to a remote host. > 3) Vinagre displays a black screen, and about 10-20 seconds later, it > crashes. > > I've obtained a core dump, but it seems I can't get debug symbols from > it. I'm using a custom version that adds a "debug" output, and my > ~/.gdbinit is set up according to what Guix recommends in its manual > ((guix) Installing Debugging Files). What do I need to do to get gdb to > give me useful information? > > Example debugging session follows: > > --8<---------------cut here---------------start------------->8--- > [0] marusich@garuda.local:~/debug-vinagre > $ cat ~/.gdbinit > # Tell GDB where to look for separate debugging files. > set debug-file-directory ~/.guix-profile/lib/debug > # Let GDB auto-load any files it needs. > set auto-load safe-path / > [0] marusich@garuda.local:~/debug-vinagre > $ file core > core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from > '/home/marusich/.guix-profile/bin/vinagre', real uid: 1000, effective > uid: 1000, real gid: 998, effective gid: 998, execfn: '/gnu/store/ > 7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0/bin/.vinagre-real', > platform: 'x86_64' > [0] marusich@garuda.local:~/debug-vinagre > $ tree ~/.guix-profile/lib/debug/ > /home/marusich/.guix-profile/lib/debug/ > └── gnu > └── store > ├── 7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0 -> > /gnu/store/j6nkca3pr1vhbd8bf25pphcwk66fb7nj-maru-vinagre-3.22.0-debug/ > lib/debug/gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0 > └── n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25 -> /gnu/store/ > z1y36la9q1xkc5i5vcxqm7d995nrngmn-gcc-toolchain-7.2.0/lib/debug/gnu/store/ > n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25 > > 4 directories, 0 files > [0] marusich@garuda.local:~/debug-vinagre > $ grep -A99 ~/custom-guix-packages/ > marusich.scm marusich.scm~ my-packages/ > [0] marusich@garuda.local:~/debug-vinagre > $ grep -A99 maru-vinagre ~/custom-guix-packages/marusich.scm > (define-public maru-vinagre > (package (inherit vinagre) > (name "maru-vinagre") > (outputs '("out" "debug")))) > [0] marusich@garuda.local:~/debug-vinagre > $ guix package --list-installed | grep maru-vinagre > maru-vinagre 3.22.0 debug /gnu/store/j6nkca3pr1vhbd8bf25pphcwk66fb7 > nj-maru-vinagre-3.22.0-debug > maru-vinagre 3.22.0 out /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8b > bv-maru-vinagre-3.22.0 > [0] marusich@garuda.local:~/debug-vinagre > $ gdb --quiet /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8b > bv-maru-vinagre-3.22.0/bin/.vinagre-real core > Reading symbols from /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8b > bv-maru-vinagre-3.22.0/bin/.vinagre-real... > warning: the debug information found in "/home/marusich/.guix-profile/ > lib/debug//gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8b > bv-maru-vinagre-3.22.0/bin/.vinagre-real.debug" does not match > "/gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0/bin/.vinagre-real" > (CRC mismatch). > > I've also seen this before. My workaround was that I created a package disabling strip-binaries. That worked well enough. I've also added -g3 to flags, as I needed macro expansions in debug. If you find out anything useful for the CRC mismatch thing thou, I would be really interested. That would have saved me lot of time. > (no debugging symbols found)...done. > [New LWP 28789] > [New LWP 28790] > [New LWP 28791] > [New LWP 28792] > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/gnu/store/3h31zsqxjjg52da5gp3qmhkh4x8klh > ah-glibc-2.25/lib/libthread_db.so.1". > Core was generated by `/home/marusich/.guix-profile/bin/vinagre'. > Program terminated with signal SIGSEGV, Segmentation fault. > #0 0x00007f173c081707 in vnc_connection_coroutine () from /gnu/store/ > slxc1lf23wdzjamn6pfp2inrzy74dbwh-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0 > [Current thread is 1 (Thread 0x7f1741e67500 (LWP 28789))] > (gdb) l > No symbol table is loaded. Use the "file" command. > (gdb) where > #0 0x00007f173c081707 in vnc_connection_coroutine () from /gnu/store/ > slxc1lf23wdzjamn6pfp2inrzy74dbwh-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0 > #1 0x00007f173c08489f in coroutine_trampoline () from /gnu/store/ > slxc1lf23wdzjamn6pfp2inrzy74dbwh-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0 > #2 0x00007f173ae6c990 in ?? () from /gnu/store/ > 3h31zsqxjjg52da5gp3qmhkh4x8klhah-glibc-2.25/lib/libc.so.6 > #3 0x000000000101ec08 in ?? () > #4 0x0000000000000000 in ?? () > (gdb) > --8<---------------cut here---------------end--------------->8--- > > I'm pretty new to debugging C programs in gdb, so if I'm making any > obvious mistakes, I'd really appreciate it if you'd let me know! > > Thank you, > > -- > Chris >