[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debconf-video] dvswitch segmentation fault



I'm still having issues getting dvswitch to run on a fresh Etch install with a single local camera connecting via the loopback address.

Dvswitch segfaults when the first camera connects, after displaying a full single frame (although you can only see this when using GDB).  dvgrab etc all works fine and dvsource-firewire seems to chug along happily though it all.

I think there may be a bug with the installer paths: with the code referencing pngs at /usr/local/share/dvswitch/ but files installed to /usr/share/dvswitch/ but adding symbolic links didn't seem to help the segfault so that is either unrelated or I was wrong.

I finally managed to get the debug symbols happening and it appears to segfault in dv_thumb_display_widget when it tries to reference x_image which is a null pointer.

GDB follows, any suggestions welcomed.

(gdb) run
Starting program: /usr/bin/dvswitch -h 127.0.0.1 -p 10000
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Failed to read a valid object file image from memory.
[Thread debugging using libthread_db enabled]
[New Thread -1222097216 (LWP 5272)]
[New Thread -1223791696 (LWP 5275)]
[New Thread -1232184400 (LWP 5276)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1222097216 (LWP 5272)]
dv_thumb_display_widget::draw_frame (this=0x80c81c8, context=@0xbfd629f8, height=576)
    at dv_display_widget.cpp:360
360         assert(x_image->bits_per_pixel == 24 || x_image->bits_per_pixel == 32);

(gdb) bt
#0  dv_thumb_display_widget::draw_frame (this=0x80c81c8, context=@0xbfd629f8, height=576)
    at dv_display_widget.cpp:360
#1  0x080577b4 in dv_display_widget::put_frame (this=0x80c81c8, dv_frame=@0x80c7a78)
    at dv_display_widget.cpp:112
#2  0x08053c7a in mixer_window::update (this=0x809c498) at mixer_window.cpp:135
#3  0x08054af5 in SigC::ObjectSlot1_<bool, Glib::IOCondition, mixer_window>::proxy (p1=@0xbfd62ad8,
    s=0x80a4328) at /usr/include/sigc++-1.2/sigc++/object_slot.h:101
#4  0xb7979ec3 in Glib::IOSource::dispatch () from /usr/lib/libglibmm-2.0.so.1
#5  0xb7979277 in Glib::Source::dispatch_vfunc () from /usr/lib/libglibmm- 2.0.so.1
#6  0xb7600731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#7  0xb76037a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#8  0xb7603b67 in g_main_loop_run () from /usr/lib/libglib- 2.0.so.0
#9  0xb7ae1281 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#10 0xb7e38186 in Gtk::Main::run_impl () from /usr/lib/libgtkmm-2.0.so.1
#11 0xb7e38041 in Gtk::Main::run () from /usr/lib/libgtkmm-2.0.so.1
#12 0x0804f20c in main (argc=Cannot access memory at address 0x0
) at dvswitch.cpp:107


(gdb) print x_image
$1 = (XImage *) 0x0


Thanks,
  Beren.

Reply to: