unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#30591: Vinagre segmentation fault - and gdb cannot find symbols?
@ 2018-02-24  7:59 Chris Marusich
  2018-02-24  8:24 ` Gábor Boskovits
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Marusich @ 2018-02-24  7:59 UTC (permalink / raw)
  To: 30591

[-- Attachment #1: Type: text/plain, Size: 4421 bytes --]

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/j6nkca3pr1vhbd8bf25pphcwk66fb7nj-maru-vinagre-3.22.0-debug
maru-vinagre	3.22.0	out	/gnu/store/7w9pimrkk7n1f9zxw9va6jkhmgyw8bbv-maru-vinagre-3.22.0
[0] marusich@garuda.local:~/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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#30591: Vinagre segmentation fault - and gdb cannot find symbols?
  2018-02-24  7:59 bug#30591: Vinagre segmentation fault - and gdb cannot find symbols? Chris Marusich
@ 2018-02-24  8:24 ` Gábor Boskovits
  2018-02-26  6:05   ` Chris Marusich
  0 siblings, 1 reply; 4+ messages in thread
From: Gábor Boskovits @ 2018-02-24  8:24 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 30591

[-- Attachment #1: Type: text/plain, Size: 5070 bytes --]

2018-02-24 8:59 GMT+01:00 Chris Marusich <cmmarusich@gmail.com>:

> 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
>

[-- Attachment #2: Type: text/html, Size: 6168 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#30591: Vinagre segmentation fault - and gdb cannot find symbols?
  2018-02-24  8:24 ` Gábor Boskovits
@ 2018-02-26  6:05   ` Chris Marusich
  2021-09-13  0:43     ` Sarah Morgensen
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Marusich @ 2018-02-26  6:05 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: 30591

[-- Attachment #1: Type: text/plain, Size: 3789 bytes --]

Gábor Boskovits <boskovits@gmail.com> writes:

> 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.

I was able to work around the problem by defining and then installing
the following custom package into my profile:

--8<---------------cut here---------------start------------->8---
(define-public maru-vinagre
  (package
   (inherit vinagre)
   (name "maru-vinagre")
   (outputs '("out"))
   (arguments
    (append
     (package-arguments vinagre)
     '(#:strip-binaries? #f)))))
--8<---------------cut here---------------end--------------->8---

It does NOT add a debug output; instead, it simply disables the
stripping of binaries.  GDB seems to be unhappy if I strip the symbols
and put them into the debug output.  I guess maybe it's related to the
CRC mismatch mentioned above?

Anyway, here's a little more info about what was going on at the time of
the segmentation fault:

--8<---------------cut here---------------start------------->8---
[0] marusich@garuda.local:~/debug-vinagre
$ gdb --quiet /gnu/store/xz88x8dnckvv0ipqfyvj8f2knbyx98lg-maru-vinagre-3.22.0/bin/.vinagre-real core
Reading symbols from /gnu/store/xz88x8dnckvv0ipqfyvj8f2knbyx98lg-maru-vinagre-3.22.0/bin/.vinagre-real...done.
[New LWP 26776]
[New LWP 26778]
[New LWP 26803]
[New LWP 26779]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/lib/libthread_db.so.1".
Core was generated by `/home/marusich/.guix-profile/bin/vinagre'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f8255f06717 in vnc_connection_coroutine () from /gnu/store/pk2ff5244nway4cpirqgm0hm4c39i6xr-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0
[Current thread is 1 (Thread 0x7f825bd29940 (LWP 26776))]
(gdb) l
156	../vinagre-3.22.0/vinagre/vinagre-main.c: No such file or directory.
(gdb) help directory
Add directory DIR to beginning of search path for source files.
Forget cached info on source file locations and line positions.
DIR can also be $cwd for the current working directory, or $cdir for the
directory in which the source file was compiled into object code.
With no argument, reset the search path to $cdir:$cwd, the default.
(gdb) directory vinagre-3.22.0
Source directories searched: /home/marusich/debug-vinagre/vinagre-3.22.0:$cdir:$cwd
(gdb) l
156	    {
157	      gtk_window_present_with_time (window, GDK_CURRENT_TIME);
158	    }
159	
160	  vinagre_options_process_command_line (GTK_APPLICATION (app), window, &optionstate);
161	
162	out:
163	  g_strfreev (argv);
164	
165	  g_option_context_free (context);
(gdb) where
#0  0x00007f8255f06717 in vnc_connection_coroutine () from /gnu/store/pk2ff5244nway4cpirqgm0hm4c39i6xr-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0
#1  0x00007f8255f098af in coroutine_trampoline () from /gnu/store/pk2ff5244nway4cpirqgm0hm4c39i6xr-gtk-vnc-0.7.0/lib/libgvnc-1.0.so.0
#2  0x00007f8254c887e0 in ?? () from /gnu/store/n6acaivs0jwiwpidjr551dhdni5kgpcr-glibc-2.26.105-g0890d5379c/lib/libc.so.6
#3  0x0000000000ae3578 in ?? ()
#4  0x0000000000000000 in ?? ()
(gdb) 
--8<---------------cut here---------------end--------------->8---

The backtrace makes it look like maybe the segfault occurred in gtk-vnc,
not vinagre itself, so I guess I'll need to customize more packages to
build more debug outputs and try again...

I'll keep poking at this as I get time.  If anyone has any tips, I'd
really appreciate it.

-- 
Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#30591: Vinagre segmentation fault - and gdb cannot find symbols?
  2018-02-26  6:05   ` Chris Marusich
@ 2021-09-13  0:43     ` Sarah Morgensen
  0 siblings, 0 replies; 4+ messages in thread
From: Sarah Morgensen @ 2021-09-13  0:43 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 30591-done

Hi Chris,

Chris Marusich <cmmarusich@gmail.com> writes:

> The backtrace makes it look like maybe the segfault occurred in gtk-vnc,
> not vinagre itself, so I guess I'll need to customize more packages to
> build more debug outputs and try again...
>
> I'll keep poking at this as I get time.  If anyone has any tips, I'd
> really appreciate it.

I can't replicate this, and it's rather old, so I'm closing this.  It
looks like this may have been an issue with freerdp [0] which was since
fixed.

Please reopen if this is still an issue.  Thanks,

[0] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=898448

--
Sarah




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-09-13  0:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-24  7:59 bug#30591: Vinagre segmentation fault - and gdb cannot find symbols? Chris Marusich
2018-02-24  8:24 ` Gábor Boskovits
2018-02-26  6:05   ` Chris Marusich
2021-09-13  0:43     ` Sarah Morgensen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).