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 326362 - panel crash with a11y enabled
panel crash with a11y enabled
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Widget: GtkTreeView
unspecified
Other Linux
: Normal critical
: ---
Assigned To: gtktreeview-bugs
gtktreeview-bugs
AP1
: 331463 331920 336205 336896 346530 362105 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-01-09 23:23 UTC by Kjartan Maraas
Modified: 2007-01-14 23:59 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
backtrace (142.83 KB, text/plain)
2006-01-09 23:24 UTC, Kjartan Maraas
  Details
one-line change to gtktreemodelfilter.c which prevents the SEGV (660 bytes, patch)
2006-03-10 15:19 UTC, bill.haneman
none Details | Review
change to gailtreeview (also one line) which restores treeview accessibility (440 bytes, patch)
2006-03-10 15:21 UTC, bill.haneman
committed Details | Review

Description Kjartan Maraas 2006-01-09 23:23:45 UTC
0x0081f402 in __kernel_vsyscall ()

Thread 1 (Thread -1208236368 (LWP 20597))

  • #0 __kernel_vsyscall
  • #1 ??
    from /lib/libpthread.so.0
  • #2 libgnomeui_segv_handle
    at gnome-ui-init.c line 792
  • #3 <signal handler called>
  • #4 gtk_tree_model_filter_iter_has_child
    at gtktreemodelfilter.c line 2070
  • #5 IA__gtk_tree_model_iter_has_child
    at gtktreemodel.c line 1159
  • #6 count_rows
    at gailtreeview.c line 4351
  • #7 get_row_count
    at gailtreeview.c line 4512
  • #8 columns_changed
    at gailtreeview.c line 2583
  • #9 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #10 IA__g_closure_invoke
    at gclosure.c line 490
  • #11 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #12 IA__g_signal_emit_valist
    at gsignal.c line 2197

Attaching the full trace since it's huge.
Comment 1 Kjartan Maraas 2006-01-09 23:24:50 UTC
Created attachment 57074 [details]
backtrace
Comment 2 Vincent Untz 2006-01-11 20:57:44 UTC
Looks like a gail bug.
Comment 3 bill.haneman 2006-01-12 11:06:58 UTC
Kjartan;

we need (at least!)  

* symbol table info for signal handler, which is where the problem probably arises
* steps to reproduce

Thanks.
Comment 4 Kjartan Maraas 2006-01-17 12:55:15 UTC
Bill, the crash is happening in gtktreemodelfilter.c which in turn causes the signal handler to be called with signum=11, the signal handler is not crashing.

The crash happened when using the run dialog IIRC.
Comment 5 Kjartan Maraas 2006-02-14 16:22:08 UTC
Can't reproduce this any more. Closing.
Comment 6 Kjartan Maraas 2006-02-21 12:47:49 UTC
Got it again without trying so hard :-/
Comment 7 Kjartan Maraas 2006-02-21 12:49:02 UTC
*** Bug 331920 has been marked as a duplicate of this bug. ***
Comment 8 bill.haneman 2006-02-21 16:20:12 UTC
Should be fixed in cvs, and in gail 1.8.10.
Comment 9 Vincent Untz 2006-03-06 20:35:46 UTC
*** Bug 331463 has been marked as a duplicate of this bug. ***
Comment 10 Willie Walker 2006-03-08 23:41:32 UTC
Upon inspiration from the gail module maintainer, we did some debugging today.  We're positive this fix introduces a very bad regression so as to make trees inaccessible. Here's the rundown.  The fix in question makes these changes to gailtreeview.c:count_rows:

*** gailtreeview.c.orig Wed Mar  8 13:48:01 2006
--- gailtreeview.c      Wed Mar  8 13:48:13 2006
***************
*** 4315,4321 ****
 {
   GtkTreeIter child_iter;

!   if (!model || !iter)
     return;

   level++;
--- 4315,4321 ----
 {
   GtkTreeIter child_iter;

!   if (!model)
     return;

   level++;

The signature of count_rows looks like this (note that iter is the 2nd parameter):

count_rows (GtkTreeModel *model,
            GtkTreeIter *iter,
            GtkTreePath *end_path,
            gint        *count,
            gint        level,
            gint        depth)

Let's now take a look at get_row_count from this same module.  get_row_count calls count_rows:

static gint
get_row_count (GtkTreeModel *model)
{
  gint n_rows = 1;

  count_rows (model, NULL, NULL, &n_rows, 0, G_MAXINT);

  return n_rows;
}

Notice that it is passing NULL in for iter.  This implies that either it is legal to have iter==NULL or this code path is broken, too.  Let's assume that it is actually OK to have iter==NULL and dig into what gtk_tree_model_iter_n_children (what count_rows calls first) will do in the presence of iter==NULL.  The first stop on our journey is gtk+/gtk/gtktreemodel.c:gtk_tree_model_iter_n_children:

gint
gtk_tree_model_iter_n_children (GtkTreeModel *tree_model,
                                GtkTreeIter  *iter)
{
  GtkTreeModelIface *iface;

  g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), 0);

  iface = GTK_TREE_MODEL_GET_IFACE (tree_model);
  g_return_val_if_fail (iface->iter_n_children != NULL, 0);

  return (* iface->iter_n_children) (tree_model, iter);
}

Say "XYZZY" three times, and iface->iter_n_children can end up in gtk+/gtk/gtktreestore.c:gtk_tree_store_iter_n_children.  Look at the lines I've prefixed with "-->".  It looks as though iter=NULL may indeed be legal, and includes the "node = G_NODE (GTK_TREE_STORE (tree_model)->root)->children;" logic to handle this case:

static gint
gtk_tree_store_iter_n_children (GtkTreeModel *tree_model,
                                GtkTreeIter  *iter)
{
  GNode *node;
  gint i = 0;

-->  g_return_val_if_fail (iter == NULL || iter->user_data != NULL, 0);
-->
-->  if (iter == NULL)
-->    node = G_NODE (GTK_TREE_STORE (tree_model)->root)->children;
  else
    node = G_NODE (iter->user_data)->children;

  while (node)
    {
      i++;
      node = node->next;
    }

  return i;
}

Thus, when one goes all the way back to the gailtreeview.c:count_rows, it looks as though preventing this logic from happening is a very very bad thing.   In fact, with this change pulled out, the unusable behavior we were seeing in Orca and Gnopernicus with respect to tree tables is gone.

Comment 11 bill.haneman 2006-03-09 11:21:40 UTC
OK, so you've gotten rid of your crash, but regressed the one in this bug :-(

Comment 12 bill.haneman 2006-03-09 11:23:03 UTC
Since you've gone this far, could we have a more appropriate patch than the one in  question?
Comment 13 Willie Walker 2006-03-09 12:02:42 UTC
We were only able to analyze why the fix in question was not an appropriate fix in that it caused a more general failure as opposed to an isolated crash.  I'm going to assume from your comments, however, that the maintainer of this module will still be unable to investigate this problem further?
Comment 14 Al Puzzuoli 2006-03-09 22:43:33 UTC
As a user of Gnome 2.14, I have serious concerns that any delays in the investigation of this issue could have a long term impact on the over all accessibility of the platform.   I understand that Gnome 2.14 is still prerelease software and as such, a certain level of instability is to be expected; However, the problem in this instance is that the issue currently being discussed is so severe as to make any further testing related to other issues involving accessibility virtually impossible.

I  use Orca as well as Gnopernicus, and find that I am unable to perform even the most basic of functions:
In Gedit, I can't bring up the file open dialog and browse to a specific file.
Under the login screen accessibility tab, I am unable to effectively select sounds to assign to system events.
In Fedora core 5, I am unable to utilize  the interface in the Pup package manager to select and deselect updates.
The buddy list in Gaim is inaccessible.

And the list goes on.

At this point, I have completely given up on the thought of doing further testing, let alone any attempts to use Gnome 2.14 as an effective productivity tool, until this issue has been resolved.
Comment 15 bill.haneman 2006-03-09 22:50:08 UTC
Hi Al;

Your comment will be useful in convincing the Gnome release team to allow us to revert the patch (since we are in code freeze), if that seems to be the lesser of two evils here.  However since the original problem was a crasher, it may not be acceptable.  I'll take a look at the issue tomorrow, given the seriousness of the issue.
Comment 16 bill.haneman 2006-03-10 09:50:51 UTC
Will and Rich:

Reading gtktreemodelfilter.c, one sees that it's not legal to call gtk_tree_model_filter_iter_has_child with a NULL iter.  This is why your suggestion that count_rows allow a NULL iter is problematic, as count_rows calls gtk_tree_model_filter_iter_has_child.


  
Comment 17 bill.haneman 2006-03-10 10:13:28 UTC
Looks like a gtk+ bug in gtktreemodelfilter.c, line 2070, right after the FIXME comment, where gtktreemodelfilter.c assumes that if iter->user_data2 can be cast successfully to FILTER_ELT, the resulting elt->children->array will be non-NULL if elt->children is non-null.  This is the line of code where the SEGV is occurring, and it's well past the point where legal calls have been handed over to gtk+ from gail.
Comment 18 Willie Walker 2006-03-10 13:33:08 UTC
Thanks for looking into this further.  I'm not sure from your last two comments, but I'm assuming that you agree the gail patch for iter==NULL should be removed:  from the code path in my earlier post, I've believe I've shown that iter==NULL is indeed legal and required for proper behavior for some calls - it just depends upon what GTK_TREE_MODEL_GET_IFACE (tree_model) gives you (e.g., an iface from gtktreemodelfilter, an iface from gtktreestore, etc.).  But, thanks to your digging, it looks like gtktreemodelfilter.c also needs to be fixed to solve all these bugs in question. 
Comment 19 bill.haneman 2006-03-10 15:18:20 UTC
Yes, ignore comment #16 from me as irrelevant.  I think the right thing to do is revert part of the gailtreeview patch (specifically, the part that rejects iter==NULL, as you suggest) and apply the attached gtk+ patch for gtktreemodelfilter.c  This should both reinstate accessibility of trees, and prevent the SEGV that is the subject of this bug.
Comment 20 bill.haneman 2006-03-10 15:19:48 UTC
Created attachment 61040 [details] [review]
one-line change to gtktreemodelfilter.c which prevents the SEGV
Comment 21 bill.haneman 2006-03-10 15:21:45 UTC
Created attachment 61041 [details] [review]
change to gailtreeview (also one line) which restores treeview accessibility
Comment 22 bill.haneman 2006-03-10 15:26:43 UTC
Kjartan, if you could apply the patches and confirm that the original problem is resolved, we would be very grateful.  This would make it feasible to apply both patches to gnome 2.14.0 and in so doing make it useful to our visually impaired users again.
Comment 23 Matthias Clasen 2006-03-10 18:11:24 UTC
The fix in comment #20 looks harmless and obviously correct. 
If that fixes the a11y problem, I'll do a gtk release with it.
Comment 24 Matthias Clasen 2006-03-10 20:22:17 UTC
with the gail+ gtk patches, I don't see a crash from the "Add to panel" dialog
(if that is where the original crash occurred). gnopernicus does not read the content of the treeview cells to me either, though (not sure if I should expect that...)
Comment 25 Willie Walker 2006-03-11 08:08:53 UTC
I just verified that the gail patch <http://bugzilla.gnome.org/attachment.cgi?id=61041> fixes the global accessibility problem, including being able to read the "Add to panel" box, the GEdit open box, the GAIM buddy list, selecting a system sound to be played, etc.  Note that in the "Add to pabel" table, you may need to press Ctrl+<right arrow> to get the appropriate speech output.  I'm off to now include/test the gtk patch.
Comment 26 Willie Walker 2006-03-11 12:00:04 UTC
I just verified that the gtk patch <http://bugzilla.gnome.org/attachment.cgi?id=61040> didn't seem to cause any problems.  That is, I've not been able to reproduce the SEGV.

Furthermore, with both the gail and gtk patches applied, tables work as expected with Gnopernicus and Orca.

Mattias, can you please verify that your gail/gailtreeview.c module at line 4318 looks like:

  if (!model) return;

and that you're indeed running/testing with the gail fix in place?  That is, after you've built this, you should make sure accessibility support is enabled and that you log out and back in to be extra sure that the new gail module is being used. This can be an easy thing to forget to do.
Comment 27 Matthias Clasen 2006-03-11 16:07:56 UTC
hmm, gnopernicus does not want to speak to me at the moment.
Thus I cannot verify that Ctrl-right works to read the treeview contents.
Comment 28 Willie Walker 2006-03-11 16:10:44 UTC
Does test-speech work?  If not, you might try killing all *-synthesis-driver processes and trying again.
Comment 29 Al Puzzuoli 2006-03-12 17:47:27 UTC
I was able to apply the gailtreeview patch with no problem; However, when I attempt to apply the patch to  gtktreemodelfilter from a fresh source tree as checked out last evening, I get the following:

[root@systemax gtk]# patch -p1 <treemodelfilter-segv-fix.diff
patching file gtktreemodelfilter.c
Hunk #1 FAILED at 2067.
1 out of 1 hunk FAILED -- saving rejects to file gtktreemodelfilter.c.rej  
Comment 30 bill.haneman 2006-03-12 22:53:46 UTC
Al, the patch is for the 2.8 branch of gtk+ (for gnome 2.14).
Comment 31 Matthias Clasen 2006-03-13 18:07:58 UTC
The GTK+ patch is in 2.8.15, just released
Comment 32 Willie Walker 2006-03-13 19:00:46 UTC
Thanks so much everyone!  This definitely helped avert an accessibility disaster for GNOME 2.14.
Comment 33 Kjartan Maraas 2006-03-15 08:50:28 UTC
I finally got a chance to build a smoketesting environment for 2.14.0 now and I'm sad to say I still get this crash with gtk 2.8.15 and gail 1.8.11. Am I missing some fix here? Would be very nice to get this fixed for the release.
Comment 34 bill.haneman 2006-03-15 10:33:24 UTC
Kjartan, is the SEGV still happening here:

 0x01016528 in gtk_tree_model_filter_iter_has_child (model=0x8152670,
    iter=0xbffe2d54) at gtktreemodelfilter.c:2070

or is it somewhere else?
Comment 35 Kjartan Maraas 2006-03-15 13:29:34 UTC
Here's the backtrace I got:

[kmaraas@localhost shared-mime-info-0.17]$ cat /tmp/panel-a11y-crash.txt
(gdb) bt
  • #0 ??
  • #1 ??
    from /lib/libpthread.so.0
  • #2 libgnomeui_segv_handle
    at gnome-ui-init.c line 792
  • #3 <signal handler called>
  • #4 gtk_tree_model_filter_iter_has_child
    at gtktreemodelfilter.c line 2070
  • #5 IA__gtk_tree_model_iter_has_child
    at gtktreemodel.c line 1159
  • #6 count_rows
    at gailtreeview.c line 4352
  • #7 get_row_count
    at gailtreeview.c line 4513
  • #8 columns_changed
    at gailtreeview.c line 2584
  • #9 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #10 IA__g_closure_invoke
    at gclosure.c line 490
  • #11 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #12 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #13 IA__g_signal_emit
    at gsignal.c line 2241
  • #14 IA__gtk_tree_view_remove_column
    at gtktreeview.c line 10000
  • #15 gtk_tree_view_destroy
    at gtktreeview.c line 1363
  • #16 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #17 g_type_class_meta_marshal
    at gclosure.c line 567
  • #18 IA__g_closure_invoke
    at gclosure.c line 490
  • #19 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #20 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #21 IA__g_signal_emit
    at gsignal.c line 2241
  • #22 gtk_object_dispose
    at gtkobject.c line 419
  • #23 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #24 IA__g_object_run_dispose
    at gobject.c line 571
  • #25 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #26 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #27 gtk_bin_forall
    at gtkbin.c line 166
  • #28 gtk_scrolled_window_forall
    at gtkscrolledwindow.c line 816
  • #29 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #30 gtk_container_destroy
    at gtkcontainer.c line 829
  • #31 gtk_scrolled_window_destroy
    at gtkscrolledwindow.c line 675
  • #32 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #33 g_type_class_meta_marshal
    at gclosure.c line 567
  • #34 IA__g_closure_invoke
    at gclosure.c line 490
  • #35 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #36 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #37 IA__g_signal_emit
    at gsignal.c line 2241
  • #38 gtk_object_dispose
    at gtkobject.c line 419
  • #39 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #40 IA__g_object_run_dispose
    at gobject.c line 571
  • #41 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #42 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #43 gtk_box_forall
    at gtkbox.c line 703
  • #44 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #45 gtk_container_destroy
    at gtkcontainer.c line 829
  • #46 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #47 g_type_class_meta_marshal
    at gclosure.c line 567
  • #48 IA__g_closure_invoke
    at gclosure.c line 490
  • #49 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #50 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #51 IA__g_signal_emit
    at gsignal.c line 2241
  • #52 gtk_object_dispose
    at gtkobject.c line 419
  • #53 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #54 IA__g_object_run_dispose
    at gobject.c line 571
  • #55 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #56 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #57 gtk_expander_forall
    at gtkexpander.c line 1174
  • #58 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #59 gtk_container_destroy
    at gtkcontainer.c line 829
  • #60 gtk_expander_destroy
    at gtkexpander.c line 379
  • #61 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #62 g_type_class_meta_marshal
    at gclosure.c line 567
  • #63 IA__g_closure_invoke
    at gclosure.c line 490
  • #64 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #65 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #66 IA__g_signal_emit
    at gsignal.c line 2241
  • #67 gtk_object_dispose
    at gtkobject.c line 419
  • #68 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #69 IA__g_object_run_dispose
    at gobject.c line 571
  • #70 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #71 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #72 gtk_box_forall
    at gtkbox.c line 703
  • #73 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #74 gtk_container_destroy
    at gtkcontainer.c line 829
  • #75 IA__g_cclosure_marshal_VOID__VOID
  • #76 g_type_class_meta_marshal
    at gclosure.c line 567
  • #77 IA__g_closure_invoke
    at gclosure.c line 490
  • #78 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #79 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #80 IA__g_signal_emit
    at gsignal.c line 2241
  • #81 gtk_object_dispose
    at gtkobject.c line 419
  • #82 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #83 IA__g_object_run_dispose
    at gobject.c line 571
  • #84 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #85 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #86 gtk_box_forall
    at gtkbox.c line 703
  • #87 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #88 gtk_container_destroy
    at gtkcontainer.c line 829
  • #89 IA__g_cclosure_marshal_VOID__VOID
  • #90 g_type_class_meta_marshal
    at gclosure.c line 567
  • #91 IA__g_closure_invoke
    at gclosure.c line 490
  • #92 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #93 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #94 IA__g_signal_emit
    at gsignal.c line 2241
  • #95 gtk_object_dispose
    at gtkobject.c line 419
  • #96 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #97 IA__g_object_run_dispose
    at gobject.c line 571
  • #98 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #99 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #100 gtk_bin_forall
    at gtkbin.c line 166
  • #101 IA__gtk_container_foreach
    at gtkcontainer.c line 1292
  • #102 gtk_container_destroy
    at gtkcontainer.c line 829
  • #103 gtk_window_destroy
    at gtkwindow.c line 3828
  • #104 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #105 g_type_class_meta_marshal
    at gclosure.c line 567
  • #106 IA__g_closure_invoke
    at gclosure.c line 490
  • #107 signal_emit_unlocked_R
    at gsignal.c line 2554
  • #108 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #109 IA__g_signal_emit
    at gsignal.c line 2241
  • #110 gtk_object_dispose
    at gtkobject.c line 419
  • #111 gtk_widget_dispose
    at gtkwidget.c line 6653
  • #112 gtk_window_dispose
    at gtkwindow.c line 1762
  • #113 IA__g_object_run_dispose
    at gobject.c line 571
  • #114 IA__gtk_object_destroy
    at gtkobject.c line 404
  • #115 IA__gtk_widget_destroy
    at gtkwidget.c line 1995
  • #116 panel_run_dialog_response
    at panel-run-dialog.c line 412
  • #117 IA__g_cclosure_marshal_VOID__INT
    at gmarshal.c line 216
  • #118 IA__g_closure_invoke
    at gclosure.c line 490
  • #119 signal_emit_unlocked_R
  • #120 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #121 IA__g_signal_emit
    at gsignal.c line 2241
  • #122 IA__gtk_dialog_response
    at gtkdialog.c line 858
  • #123 action_widget_activated
    at gtkdialog.c line 557
  • #124 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #125 IA__g_closure_invoke
    at gclosure.c line 490
  • #126 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #127 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #128 IA__g_signal_emit
    at gsignal.c line 2241
  • #129 IA__gtk_button_clicked
    at gtkbutton.c line 845
  • #130 gtk_button_finish_activate
    at gtkbutton.c line 1453
  • #131 gtk_button_key_release
    at gtkbutton.c line 1310
  • #132 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 83
  • #133 g_type_class_meta_marshal
  • #134 IA__g_closure_invoke
    at gclosure.c line 490
  • #135 signal_emit_unlocked_R
    at gsignal.c line 2476
  • #136 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #137 IA__g_signal_emit
    at gsignal.c line 2241
  • #138 gtk_widget_event_internal
    at gtkwidget.c line 3732
  • #139 IA__gtk_propagate_event
    at gtkmain.c line 2151
  • #140 IA__gtk_main_do_event
    at gtkmain.c line 1422
  • #141 gdk_event_dispatch
    at gdkevents-x11.c line 2291
  • #142 IA__g_main_context_dispatch
    at gmain.c line 1916
  • #143 g_main_context_iterate
    at gmain.c line 2547
  • #144 IA__g_main_loop_run
    at gmain.c line 2751
  • #145 IA__gtk_main
    at gtkmain.c line 1001
  • #146 main
    at main.c line 93

Comment 36 Matthias Clasen 2006-03-15 13:48:47 UTC
Just to make it clear: this is most likely a gail bug, not something in gtktreemodelfilter.c (according to kris)
Comment 37 Kjartan Maraas 2006-03-15 13:55:43 UTC
Let me just add that this happens *every* time I do alt+f2 and type in an app name to start an app (crash happens after running the app)
Comment 38 Matthias Clasen 2006-03-15 14:05:31 UTC
Hum, it appears I messed up and did not actually commit the gtktreemodelfilter.c
workaround in the tree where I did 2.8.15. Too bad
Comment 39 Matthias Clasen 2006-03-15 14:14:38 UTC
Spinning 2.8.16 now
Comment 40 Elijah Newren 2006-03-15 14:15:59 UTC
Matthias: I noted there was one other occurrence of elt->children->array->len without checking if elt->children->array was non-NULL in gtktreemodelfilter.c (in  gtk_tree_model_filter_iter_n_children); should it be checked more carefully too?
Comment 41 Matthias Clasen 2006-03-15 14:18:55 UTC
The patch adds the extra check to both of these.
Thats the only change between 2.8.15 and 2.8.16
Comment 42 bill.haneman 2006-03-15 15:21:45 UTC
>Just to make it clear: this is most likely a gail bug, not something in
>gtktreemodelfilter.c (according to kris)

Hmm, when I talked to kris he didn't say that, only that it _might_ be gail, but was just as likely to be a problem _elsewhere in gtktreemodelfilter_.
Comment 43 Matthias Clasen 2006-03-15 15:26:26 UTC
maybe I overstated it; yes, the problem could be somewhere else in gtktreemodelfilter.c
Comment 44 bill.haneman 2006-03-20 12:37:47 UTC
Is this still happening with gail+gtk+ from 2.8.HEAD and gail-HEAD?
Comment 45 Kjartan Maraas 2006-03-20 23:23:30 UTC
No, the patch that Matthias commited to gtk+ fixed it for me AFAICS.
Comment 46 Matthias Clasen 2006-03-21 00:18:48 UTC
I left the bug open, since the committed patch is just a workaround for 
a problem a some other place, according to kris.
Comment 47 Kristian Rietveld 2006-03-21 06:43:05 UTC
Yep.  Would be good if somebody could test if this bug occurs with GTK+ HEAD.
Comment 48 bill.haneman 2006-03-21 11:56:07 UTC
I think we should close this bug until we have a way of reproducing it again.

Looking at the code in HEAD, I wonder if this will cause a critical warning to be thrown, since in this case gtk_tree_model_filter_iter_has_child is being called inside the gtk_tree_view_destroy emission...
Comment 49 bill.haneman 2006-03-21 11:57:29 UTC
BTW, the above call should be technically legal, but only a11y is likely to do it (because when we emit the object:state-changed:defunct event on the GtkTreeView ATK peer, we need to gather a little info on the treeview object).
Comment 50 Calum Benson 2006-04-26 17:12:57 UTC
Apologies for spam... ensuring Sun a11y folks are cc'ed on all current accessibility bugs.
Comment 51 Calum Benson 2006-04-26 17:38:22 UTC
Apologies for spam... marking as AP1 to reflect accessibility impact (assuming still reproducible)
Comment 52 Daniel Holbach 2006-05-10 10:43:01 UTC
I can still reproduce this with gtk 2.8.17, gnome-panel 2.14.1 and gail 1.8.11 - backtrace attached:

Backtrace was generated from '/usr/bin/gnome-panel'

Using host libthread_db library "/lib/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 46912584629552 (LWP 23833)]
[New Thread 1074006368 (LWP 23836)]
0x00002aaaace1f0ca in waitpid () from /lib/libpthread.so.0

Thread 1 (Thread 46912584629552 (LWP 23833))

  • #0 waitpid
    from /lib/libpthread.so.0
  • #1 libgnomeui_segv_handle
    at gnome-ui-init.c line 820
  • #2 <signal handler called>
  • #3 gtk_tree_model_filter_iter_has_child
    at gtktreemodelfilter.c line 2070
  • #4 gail_tree_view_new
    from /usr/lib/gtk-2.0/modules/libgail.so
  • #5 gail_tree_view_ref_focus_cell
    from /usr/lib/gtk-2.0/modules/libgail.so
  • #6 gail_tree_view_ref_focus_cell
    from /usr/lib/gtk-2.0/modules/libgail.so
  • #7 IA__g_closure_invoke
    at gclosure.c line 490

Comment 53 Karsten Bräckelmann 2006-07-04 15:42:06 UTC
*** Bug 336205 has been marked as a duplicate of this bug. ***
Comment 54 Karsten Bräckelmann 2006-07-04 15:42:13 UTC
*** Bug 346530 has been marked as a duplicate of this bug. ***
Comment 55 Karsten Bräckelmann 2006-07-04 15:43:58 UTC
Crasher with duplicates, Severity critical.
Comment 56 Kristian Rietveld 2006-07-14 20:10:40 UTC
Did *anyone* test this with GTK+ 2.10 yet?  A few months  back I asked if somebody could test with GTK+ HEAD, but I didn't get any responses.  Since quite a lot of bug fixes for the filter model went into GTK+ 2.10, it would be really interesting to know whether the crash still occurs with 2.10.
Comment 57 Mike Pedersen 2006-07-24 21:00:01 UTC
I've just tested this and can no longer reproduce the crash in the run dialog with Orca running.  
Comment 58 Vincent Untz 2006-08-31 11:53:17 UTC
*** Bug 336896 has been marked as a duplicate of this bug. ***
Comment 59 Vincent Untz 2007-01-14 23:59:19 UTC
*** Bug 362105 has been marked as a duplicate of this bug. ***