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

From: Gábor Boskovits <[email-masked]>
Date: Sat, 24 Feb 2018 09:24:22 +0100

2018-02-24 8:59 GMT+01:00 Chris Marusich <[email-masked]>:

> 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/j6nkca3pr1vhbd8bf25pphcwk66fb7
> nj-maru-vinagre-3.22.0-debug
> maru-vinagre    3.22.0  out     /gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8b
> bv-maru-vinagre-3.22.0
> [0] [email-masked]:~/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
>