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

From: Chris Marusich <[email-masked]>
Date: Mon, 26 Feb 2018 07:05:06 +0100

Gábor Boskovits <[email-masked]> 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] [email-masked]:~/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