Bug 338 - Crash under Linux when rest button is pressed
Status:
RESOLVED FIXED
Component:
GUI :: gtkmm
Version:
1.4.1
Hardware:
PC Linux
Importance:
P2 normal
Target Milestone:
---
Assignee:
Rob Caelers
URL:
Depends on:
Blocks:
Reported:
Dec 4 2003 00:01:39 UTC
by:
Andris Pavenis
Modified:
Dec 4 2003 10:04:26 UTC
WhoWhenWhatRemovedAdded
Rob CaelersDec 4 2003 10:04:26 UTCstatusNEWRESOLVED
resolutionFIXED
Description
Andris Pavenis  Dec 4 2003 00:01:39 UTC
Workrave-1.4.1 crash under Linux (Slackware-current, KDE-3.2-beta2 from CVS),
when button
for making rest is pressed. It also often crashes in applet mode. The following
small
patch seems to fix it:

--- workrave-1.4.1/src/app/gtkmm/RestBreakWindow.cc~1   2003-10-30
21:52:45.000000000 +0200
+++ workrave-1.4.1/src/app/gtkmm/RestBreakWindow.cc     2003-12-02
16:09:15.000000000 +0200
@@ -112,8 +112,8 @@ void
 RestBreakWindow::start()
 {
   TRACE_ENTER("RestBreakWindow::start");
-#ifdef HAVE_EXERCISES
   init_gui();
+#ifdef HAVE_EXERCISES
   if (get_exercise_count() > 0)
     {
       install_exercises_panel();


Below is backtrace from GDB, which I got from this crash.

Andris


GNU gdb 6.0
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-slackware-linux"...
(gdb) r
Starting program: /disk2/src/misc/workrawe/workrave-1.4.1/src/app/gtkmm/workrave
[New Thread 16384 (LWP 15199)]
[New Thread 32769 (LWP 15413)]
[New Thread 16386 (LWP 15414)]
audio_alsa: no cards found!

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 15199)]
TimeBar::set_progress(int, int) (this=0x0, value=0, max_value=0) at TimeBar.cc:264
264       bar_value = value;
(gdb) where
#0  TimeBar::set_progress(int, int) (this=0x0, value=0, max_value=0)
    at TimeBar.cc:264
#1  0x0808856b in RestBreakWindow::draw_time_bar() (this=0x81bb648)
    at RestBreakWindow.cc:156
#2  0x08088520 in RestBreakWindow::start() (this=0x81bb648)
    at RestBreakWindow.cc:128
#3  0x0807dbd0 in GUI::start_break_window(BreakId, bool) (this=0x81012d8,
    break_id=BREAK_ID_REST_BREAK, ignorable=true) at GUI.cc:846
#4  0x080b8317 in BreakControl::break_window_start() (this=0x8154bf0)
    at BreakControl.cc:648
#5  0x080b7fb0 in BreakControl::goto_stage(BreakControl::BreakStage) (
    this=0x8154bf0, stage=STAGE_TAKING) at BreakControl.cc:298
#6  0x080b817c in BreakControl::force_start_break() (this=0x8154bf0)
    at BreakControl.cc:445
#7  0x080a194a in Core::force_break(BreakId) (this=0x8147860,
    id=BREAK_ID_REST_BREAK) at Core.cc:455
#8  0x0807cc6f in GUI::restbreak_now() (this=0x0) at GUI.cc:173
#9  0x08094c8b in SigC::ObjectSlot0_<void, Menus>::proxy(void*) (s=0x0)
    at object_slot.h:62
#10 0x40c1fc65 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) ()
   from /usr/lib/libglibmm-2.0.so.1
#11 0x407b2751 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#12 0x4079d2e0 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#13 0x407b2075 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#14 0x407b11b7 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#15 0x407b14b4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#16 0x40365a5b in gtk_button_clicked () from /usr/lib/libgtk-x11-2.0.so.0
#17 0x40366a4b in _gtk_button_paint () from /usr/lib/libgtk-x11-2.0.so.0
#18 0x40a1b299 in Gtk::Button_Class::released_callback(_GtkButton*) ()
   from /usr/lib/libgtkmm-2.0.so.1
#19 0x407b2751 in g_cclosure_marshal_VOID__VOID () from /usr/lib/libgobject-2.0.so.0
#20 0x4079d677 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#21 0x4079d2e0 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#22 0x407b1a3e in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#23 0x407b11b7 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#24 0x407b14b4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#25 0x4036599b in gtk_button_released () from /usr/lib/libgtk-x11-2.0.so.0
#26 0x403668cb in _gtk_button_paint () from /usr/lib/libgtk-x11-2.0.so.0
#27 0x40aaa8a2 in Gtk::Widget_Class::button_release_event_callback(_GtkWidget*,
_GdkEventButton*) () from /usr/lib/libgtkmm-2.0.so.1
#28 0x403f110f in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0
#29 0x4079d677 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#30 0x4079d2e0 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#31 0x407b1c35 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#32 0x407b0f8e in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#33 0x407b14b4 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#34 0x404d764b in gtk_widget_send_expose () from /usr/lib/libgtk-x11-2.0.so.0
#35 0x403f0f07 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#36 0x403efc05 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#37 0x405aeef5 in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#38 0x407fe21d in unblock_source () from /usr/lib/libglib-2.0.so.0
#39 0x407ff2e8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#40 0x407ff61f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#41 0x407ffd81 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#42 0x403ef43f in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#43 0x40a4c249 in Gtk::Main::run_impl() () from /usr/lib/libgtkmm-2.0.so.1
#44 0x40a4bfe4 in Gtk::Main::run() () from /usr/lib/libgtkmm-2.0.so.1
#45 0x0807ccd7 in GUI::main() (this=0x81012d8) at GUI.cc:215
#46 0x08098f11 in run (argc=1, argv=0xbffff6c4) at main.cc:44
#47 0x40d6b916 in __libc_start_main () from /lib/libc.so.6
#48 0x08079ca1 in _start ()