Re: Bus error when calling gtk_widget_unref (2.4.0)



Jan-Espen Pettersen wrote:

I'm having strange issues with bus errors during gtk_widget_unref calls. The widgets are not toplevel widgets.

Program received signal SIGBUS, Bus error.
0x282db108 in gtk_widget_unrealize (widget=0x81e7600) at gtkwidget.c:2277
2277      g_return_if_fail (GTK_IS_WIDGET (widget));
(gdb) bt
#0 0x282db108 in gtk_widget_unrealize (widget=0x81e7600) at gtkwidget.c:2277 #1 0x282e3661 in gtk_widget_dispose (object=0x81e7600) at gtkwidget.c:6355
#2  0x2863d5d6 in g_object_last_unref (object=0x81e7600) at gobject.c:557
#3  0x2864088a in g_object_unref (_object=0x81e7600) at gobject.c:1590
#4  0x282e4427 in gtk_widget_unref (widget=0x81e7600) at gtkwidget.c:6806
#5  0x0805d1f9 in IRCTab_destroy (itb=0x81dd13c) at irctab.c:688
#6  0x0805c6d2 in IRCTab_wait_destroy (data=0x81dd13c) at irctab.c:379
#7 0x2869b166 in g_timeout_dispatch (source=0x81e0480, callback=0x805c6c4 <IRCTab_wait_destroy>, user_data=0x81dd13c)
   at gmain.c:3250
#8  0x28697e8b in g_main_dispatch (context=0x80a2b00) at gmain.c:1895
#9 0x286991dd in g_main_context_dispatch (context=0x80a2b00) at gmain.c:2441 #10 0x28699710 in g_main_context_iterate (context=0x80a2b00, block=1, dispatch=1, self=0x80c5640) at gmain.c:2522
#11 0x28699f6b in g_main_loop_run (loop=0x80c2ab0) at gmain.c:2726
#12 0x281be798 in gtk_main () at gtkmain.c:1172
#13 0x0805b786 in gui_gtk_boot (modctl=0x8084f3c, data=0x0, arg=0xd0d0d0d0) at gui_gtk.c:480 #14 0x08059555 in mod_call (modnode=0xd0d0d0d0, ctlname=0x2 <Error reading address 0x2: Bad address>, arg=0xbfbfea68)
   at modules.c:224
#15 0x08058eaa in main (argc=1, argv=0xbfbfeac0) at main.c:148
#16 0x0804faea in _start ()

It seems like it crashed after calling gtk_widget_unrealize() after freeing the widgets memory, since the memory was filled with 0xd0-s at the crash point. The memory location was valid before the unref call. (I checked with a breakpoint). And this time it crashed while unrefing a GtkButton.

This is an attempt to run previously gtk-1.2 code with gtk-2.4.0

Versions:
gtk-2.4.0
OS=FreeBSD 5.2-CURRENT

Figured that calling gtk_container_remove "manually" solved the problem.
Did it crash because unrealize was called after the gtk_container_remove
in the dispose function, and that the container remove function
decremented the ref count to 0 and freeed the widget maybe?





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