Package: cccd
Version: 0.3beta4-6.1
Severity: grave
Program received signal SIGSEGV, Segmentation fault.
0x00000000004034c7 in update_status_string () at cccd.c:940
940 sprintf(disp.status_string, "%s", "Error");
(gdb) bt
#0 0x00000000004034c7 in update_status_string () at cccd.c:940
#1 0x000000000040448f in play_callback (widget=0x6ac190, data=<value
optimized out>)
at cccd.c:455
#2 0x00007ffff5bad47e in IA__g_closure_invoke (closure=0x6ad3d0,
return_value=0x0,
n_param_values=1, param_values=0x6b42c0,
invocation_hint=0x7fffffffd540)
at /tmp/buildd/glib2.0-2.24.1/gobject/gclosure.c:767
#3 0x00007ffff5bc33f7 in signal_emit_unlocked_R (node=0x67a0a0,
detail=<value optimized out>, instance=<value optimized out>,
emission_return=<value optimized out>, instance_and_params=<value
optimized out>)
at /tmp/buildd/glib2.0-2.24.1/gobject/gsignal.c:3248
....
(gdb) p disp
$1 = {progress_bar = 0x6ac610, drawing_area = 0x6745f0, pixmap = 0x0,
gc = 0x0,
title_font = 0x0, status_font = 0x0, time_font = 0x0, cd_title =
0x0, track_title = 0x0,
status_string = 0x0, time_string = 0x0, mode_string = 0x0, timeout =
0,
timemode = ABS_DONE}
So it is trying to write to a NULL pointer....
Looking more deeply into this I noticed that the init_display() was
not being called. It turns out that GDK_STRUCTURE_MASK needs to be set
*explicitly* because it is off by default. The documentation says
regarding map-event and configure-event,
"To receive this signal, the GdkWindow associated to the widget needs
to enable the GDK_STRUCTURE_MASK mask. GDK will enable this mask
automatically for all new windows."
- http://library.gnome.org/devel/gtk/unstable/GtkWidget.html
So basically the patch is,
diff cccd-0.3beta4/cccd.c cccd-0.3beta4-new//cccd.c
275,277c275,276
< gtk_widget_set_events(disp.drawing_area,
< gtk_widget_get_events(disp.drawing_area) |
< GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
---
> gtk_widget_add_events(disp.drawing_area,
> GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK |
> GDK_STRUCTURE_MASK);
I've attached a unified patch.
If you don't have time to upload this, let me know and I'll NMU this
small patch.
- Adam
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (50, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.34-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages cccd depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.11.1-3 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-4 The Cairo 2D vector graphics libra
ii libglib2.0-0 2.24.1-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.0-1 Layout and rendering of internatio
cccd recommends no packages.
cccd suggests no packages.
-- no debconf information
Only in cccd-0.3beta4-new: cccd
diff -u cccd-0.3beta4/cccd.c cccd-0.3beta4-new/cccd.c
--- cccd-0.3beta4/cccd.c 2010-07-17 15:01:38.000000000 -0500
+++ cccd-0.3beta4-new/cccd.c 2010-07-17 15:14:40.020019400 -0500
@@ -272,9 +272,8 @@
/* area where all text appears */
disp.drawing_area = gtk_drawing_area_new();
gtk_drawing_area_size(GTK_DRAWING_AREA(disp.drawing_area), 120, 60);
- gtk_widget_set_events(disp.drawing_area,
- gtk_widget_get_events(disp.drawing_area) |
- GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
+ gtk_widget_add_events(disp.drawing_area,
+ GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK);
gtk_signal_connect(GTK_OBJECT(disp.drawing_area), "expose_event",
(GtkSignalFunc) expose_event, NULL);
gtk_signal_connect(GTK_OBJECT(disp.drawing_area), "configure_event",
Only in cccd-0.3beta4-new: cccd.o
Only in cccd-0.3beta4-new: cddb.o
Only in cccd-0.3beta4-new: cddbp.o
Only in cccd-0.3beta4-new: cd.o
Only in cccd-0.3beta4-new: core
Common subdirectories: cccd-0.3beta4/debian and cccd-0.3beta4-new/debian
Only in cccd-0.3beta4-new: info.o
Only in cccd-0.3beta4-new: misc.o
Only in cccd-0.3beta4-new: options.o