[gtkmm] gtkmm/gtk+ 1.2 Notebook bug (just for the records, I don't really expect a fix)



There's a severe bug in gtkmm1/gtk+-1.2 integration when it comes to
destroying a notebook.

The notebooks switch_page signal is emitted after the notebook's
destructor is called. Here is a typcial backtrace :

#2  0x081625ea in Gtk::ProxySignal2<void, _GtkNotebookPage *, unsigned
int, Gtk::Notebook, _GtkNotebook, 0>::gtk_callback (p1=0x848b8d0, p2=1,
d=0x848bd20)
     at /usr/include/sigc++-1.0/sigc++/slot.h:456
[...]
#30 0x401b7baa in Gtk::Notebook::~Notebook () from
/usr/lib/libgtkmm-1.2.so.0

once you have connected switch_page to a virtual function, it repeatably
  crashes.

I will hack around this problem in glade-- (since I consider gtkmm1
obselete, too). [Remember: I still have to maintain gtkmm1 applications]
If you need a short (150 lines including comments) example, just tell me.
    Christof

PS: full backtrace
#0  0x401dd01b in Gtk::Misc::signal_names () from /usr/lib/libgtkmm-1.2.so.0
#1  0x0848b8d0 in ?? ()
#2  0x081625ea in Gtk::ProxySignal2<void, _GtkNotebookPage *, unsigned
int, Gtk::Notebook, _GtkNotebook, 0>::gtk_callback (p1=0x848b8d0, p2=1,
d=0x848bd20)
     at /usr/include/sigc++-1.0/sigc++/slot.h:456
#3  0x404a91e3 in gtk_marshal_NONE__POINTER_INT ()
    from /usr/lib/libgtk-1.2.so.0
#4  0x404d8b6c in gtk_signal_remove_emission_hook ()
    from /usr/lib/libgtk-1.2.so.0
#5  0x404d8125 in gtk_signal_set_funcs () from /usr/lib/libgtk-1.2.so.0
#6  0x404d60b3 in gtk_signal_emit () from /usr/lib/libgtk-1.2.so.0
#7  0x404b84db in gtk_notebook_new () from /usr/lib/libgtk-1.2.so.0
#8  0x404b5ddf in gtk_notebook_new () from /usr/lib/libgtk-1.2.so.0
#9  0x404b5077 in gtk_notebook_new () from /usr/lib/libgtk-1.2.so.0
#10 0x4019f748 in Gtk::Container::remove_impl ()
    from /usr/lib/libgtkmm-1.2.so.0
#11 0x4019f6c8 in Gtk::Container_Class::remove_callback ()
    from /usr/lib/libgtkmm-1.2.so.0
#12 0x404a903f in gtk_marshal_NONE__POINTER () from /usr/lib/libgtk-1.2.so.0
#13 0x404d7e6f in gtk_signal_set_funcs () from /usr/lib/libgtk-1.2.so.0
#14 0x404d60b3 in gtk_signal_emit () from /usr/lib/libgtk-1.2.so.0
#15 0x40467698 in gtk_container_remove () from /usr/lib/libgtk-1.2.so.0
#16 0x405107d4 in gtk_widget_get_default_visual ()
    from /usr/lib/libgtk-1.2.so.0
#17 0x404bae0a in gtk_object_destroy () from /usr/lib/libgtk-1.2.so.0
#18 0x405092b9 in gtk_widget_destroy () from /usr/lib/libgtk-1.2.so.0
#19 0x404b579a in gtk_notebook_new () from /usr/lib/libgtk-1.2.so.0
#20 0x404682ec in gtk_container_foreach () from /usr/lib/libgtk-1.2.so.0
#21 0x404671ba in gtk_container_query_child_args ()
    from /usr/lib/libgtk-1.2.so.0
#22 0x404b268d in gtk_notebook_new () from /usr/lib/libgtk-1.2.so.0
#23 0x404a91b5 in gtk_marshal_NONE__NONE () from /usr/lib/libgtk-1.2.so.0
#24 0x404d8013 in gtk_signal_set_funcs () from /usr/lib/libgtk-1.2.so.0
#25 0x404d60b3 in gtk_signal_emit () from /usr/lib/libgtk-1.2.so.0
#26 0x404bae6b in gtk_object_destroy () from /usr/lib/libgtk-1.2.so.0
#27 0x40510843 in gtk_widget_get_default_visual ()
    from /usr/lib/libgtk-1.2.so.0
#28 0x404bae0a in gtk_object_destroy () from /usr/lib/libgtk-1.2.so.0
#29 0x401b857d in Gtk::Object::destroy_ () from /usr/lib/libgtkmm-1.2.so.0
#30 0x401b7baa in Gtk::Notebook::~Notebook () from
/usr/lib/libgtkmm-1.2.so.0
#31 0x081623cb in datewin_glade::~datewin_glade (this=0x84860e0,
__in_chrg=0)    at datewin_glade.cc:184
#32 0x0814f00b in datewin::~datewin (this=0x84860e0, __in_chrg=0)
     at datewin.cc:131
#33 0x080c831b in Datewin::~Datewin (this=0x84860e0, __in_chrg=3)
     at auftrag_rechnung_glade.cc:537
#34 0x080c7631 in auftrag_main_glade::~auftrag_main_glade (this=0x84656c0,
     __in_chrg=0) at auftrag_main_glade.cc:567
#35 0x080b0f3b in auftrag_main::~auftrag_main (this=0x8465828, __in_chrg=3)
     at auftrag_main.cc:101
#36 0x0808a564 in main (argc=1, argv=0xbffffc94) at pps.cc:80








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