Subject: bug#30591: Vinagre segmentation fault - and gdb cannot find symbols?

From: Chris Marusich <[email-masked]>
Date: Sat, 24 Feb 2018 08:59:16 +0100

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] [email-masked]:~/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] [email-masked]:~/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] [email-masked]:~/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] [email-masked]:~/debug-vinagre
$ grep -A99 ~/custom-guix-packages/
marusich.scm   marusich.scm~  my-packages/   
[0] [email-masked]:~/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] [email-masked]:~/debug-vinagre
$ guix package --list-installed | grep maru-vinagre
maru-vinagre	3.22.0	debug	/gnu/store/j6nkca3pr1vhbd8bf25pphcwk66fb7nj-maru-vinagre-3.22.0-debug
maru-vinagre	3.22.0	out	/gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0
[0] [email-masked]:~/debug-vinagre
$ gdb --quiet /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0/bin/.vinagre-real core
Reading symbols from /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0/bin/.vinagre-real...
warning: the debug information found in "/home/marusich/.guix-profile/lib/debug//gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-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).

(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/3h31zsqxjjg52da5gp3qmhkh4x8klhah-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