After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 544794 - GtkTreeModelFilter uses a path without checking, which gives a warning -- in pretty often called function
GtkTreeModelFilter uses a path without checking, which gives a warning -- in ...
Status: RESOLVED DUPLICATE of bug 464173
Product: gtk+
Classification: Platform
Component: Widget: GtkTreeView
2.12.x
Other All
: Normal normal
: ---
Assigned To: gtktreeview-bugs
gtktreeview-bugs
Depends on:
Blocks:
 
 
Reported: 2008-07-26 01:44 UTC by Snark
Modified: 2009-02-07 04:12 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch which should solve the issue (646 bytes, patch)
2008-07-28 06:22 UTC, Snark
none Details | Review

Description Snark 2008-07-26 01:44:31 UTC
I got a series of :
(ekiga:2125): Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed

several time today -- the strange thing is that it doesn't always happen : some run just keep on spitting those, some run just go fine.

Running with --g-fatal-warnings in gdb will help find the problem
Comment 1 Snark 2008-07-26 02:10:47 UTC
Ok, I got a stack but I'm not fresh enough to find the problem for it... it seems the warning comes from the gtk_tree_store_remove call in roster-view-gtk.cpp's on_presentity_updated :

  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/i686/cmov/libc.so.6
  • #2 abort
    from /lib/i686/cmov/libc.so.6
  • #3 IA__g_logv
    at /tmp/buildd/glib2.0-2.16.4/glib/gmessages.c line 497
  • #4 IA__g_log
    at /tmp/buildd/glib2.0-2.16.4/glib/gmessages.c line 517
  • #5 IA__g_return_if_fail_warning
    at /tmp/buildd/glib2.0-2.16.4/glib/gmessages.c line 532
  • #6 IA__gtk_tree_model_row_has_child_toggled
    at /build/buildd/gtk+2.0-2.12.11/gtk/gtktreemodel.c line 1515
  • #7 gtk_tree_model_filter_row_deleted
    at /build/buildd/gtk+2.0-2.12.11/gtk/gtktreemodelfilter.c line 1836
  • #8 IA__g_cclosure_marshal_VOID__BOXED
    at /tmp/buildd/glib2.0-2.16.4/gobject/gmarshal.c line 566
  • #9 IA__g_closure_invoke
    at /tmp/buildd/glib2.0-2.16.4/gobject/gclosure.c line 490
  • #10 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.16.4/gobject/gsignal.c line 2440
  • #11 IA__g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.16.4/gobject/gsignal.c line 2199
  • #12 IA__g_signal_emit
    at /tmp/buildd/glib2.0-2.16.4/gobject/gsignal.c line 2243
  • #13 IA__gtk_tree_model_row_deleted
    at /build/buildd/gtk+2.0-2.12.11/gtk/gtktreemodel.c line 1537
  • #14 IA__gtk_tree_store_remove
    at /build/buildd/gtk+2.0-2.12.11/gtk/gtktreestore.c line 1121
  • #15 on_presentity_updated
    at ../../../../lib/engine/gui/gtk-frontend/roster-view-gtk.cpp line 862
  • #16 sigc::internal::slot_call3<sigc::bind_functor<-1, sigc::pointer_functor4<Ekiga::Cluster&, Ekiga::Heap&, Ekiga::Presentity&, void*, void>, _RosterViewGtk*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void, Ekiga::Cluster&, Ekiga::Heap&, Ekiga::Presentity&>::call_it
    at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h line 225
  • #17 Ekiga::PresenceCore::on_presentity_updated
    at /usr/include/sigc++-2.0/sigc++/signal.h line 986

Comment 2 Snark 2008-07-28 06:20:57 UTC
Ok, I poked around and found the problem is in gtk+ : in gtk_tree_model_filter_row_deleted,  a path is obtained using gtk_tree_model_get_path, and used unchecked to call gtk_tree_model_row_has_child_toggled ; the problem being that when called on an invisible element, gtk_tree_model_filter_get_path (the implementation of gtk_tree_model_get_path which gets called) just returns NULL.
Comment 3 Snark 2008-07-28 06:22:14 UTC
Created attachment 115413 [details] [review]
Patch which should solve the issue

This patch just checks for NULL before calling gtk_tree_model_row_has_child_toggled.
Comment 4 Björn Lindqvist 2008-08-03 23:58:27 UTC
This problem is similar to Bug 464173.
Comment 5 Stef Walter 2009-02-07 04:12:17 UTC
This is the same problem as bug #464173. 

In the test case at bug #464173 the gtk_tree_model_filter_refilter() causes a row remove, in the above stack trace the row remove happens explicitly.

*** This bug has been marked as a duplicate of 464173 ***