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 669794 - Orca + Trees/Tables == incorrect cells presented, crashes, and hangs
Orca + Trees/Tables == incorrect cells presented, crashes, and hangs
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: general
3.3.x
Other Linux
: Normal major
: ---
Assigned To: Joanmarie Diggs (IRC: joanie)
Orca Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-02-10 08:57 UTC by Joanmarie Diggs (IRC: joanie)
Modified: 2012-02-12 16:50 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Joanmarie Diggs (IRC: joanie) 2012-02-10 08:57:31 UTC
Step to reproduce:

1. Arrow Up and Down in the Orca Preferences dialog's keybinding table.

At some point (for me in Fedora 17) Orca crashes -- after not presenting the correct cells. At some point (for Rob and Luke in Ubuntu Precise), Orca hangs. We all are seeing this error right before the crash/hang:

/usr/lib/python2.7/dist-packages/gi/types.py:43: Warning: g_object_ref: assertion `object->ref_count > 0' failed
  return info.invoke(*args, **kwargs)
process 4119: arguments to dbus_message_new_signal() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1288.
This is normally a bug in some application using the D-Bus library.
Comment 1 Joanmarie Diggs (IRC: joanie) 2012-02-10 09:33:17 UTC
I am able to crash gtk3-demo with the same error and without using Orca by arrowing up and down a bunch in the gtk3-demo's Tree Store while running the following simple listener:

---------------
#!/usr/bin/python
import pyatspi

def listener(e):
    print e

pyatspi.Registry.registerEventListener(listener, "object:state-changed")
pyatspi.Registry.start()
---------------

Result:

GLib-GObject-CRITICAL **: g_object_ref: assertion `object->ref_count > 0' failed
process 17660: arguments to dbus_message_new_signal() were incorrect, assertion "path != NULL" failed in file dbus-message.c line 1286.
This is normally a bug in some application using the D-Bus library.
  D-Bus not built with -rdynamic so unable to print a backtrace

Program received signal SIGABRT, Aborted.
0x0000003393c358e5 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64	  return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
Missing separate debuginfos, use: debuginfo-install gtk3-devel-3.3.10-1.fc17.x86_64
(gdb) thread apply all bt

Thread 1 (Thread 0x7ffff658d980 (LWP 17660))

  • #0 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 __GI_abort
    at abort.c line 91
  • #2 ??
    from /lib64/libdbus-1.so.3
  • #3 ??
    from /lib64/libdbus-1.so.3
  • #4 dbus_message_new_signal
    from /lib64/libdbus-1.so.3
  • #5 emit_event
    at ../../atk-adaptor/event.c line 481
  • #6 state_event_listener
    at ../../atk-adaptor/event.c line 650
  • #7 signal_emit_unlocked_R
    at gsignal.c line 3268
  • #8 g_signal_emit_valist
    at gsignal.c line 3033
  • #9 g_signal_emit
    at gsignal.c line 3090
  • #10 gtk_accessible_set_widget
    at gtkaccessible.c line 197
  • #11 gtk_accessible_finalize
    at gtkaccessible.c line 137
  • #12 g_object_unref
    at gobject.c line 3008
  • #13 expiry_func
    at ../../atk-adaptor/accessible-leasing.c line 122
  • #14 g_timeout_dispatch
    at gmain.c line 3854
  • #15 g_main_dispatch
    at gmain.c line 2510
  • #16 g_main_context_dispatch
    at gmain.c line 3047
  • #17 g_main_context_iterate
    at gmain.c line 3118
  • #18 g_main_loop_run
    at gmain.c line 3312
  • #19 gtk_main
    at gtkmain.c line 1163
  • #20 main
    at main.c line 1005

Comment 2 Joanmarie Diggs (IRC: joanie) 2012-02-10 12:50:19 UTC
The hang was fixed in Gtk+ by Benjamin Otte:
http://git.gnome.org/browse/gtk+/commit/?id=3b1d8beab0c213f7a46d76fcbaa5a93aeb2d0918

In addition, Mike Gorse added some code to AT-SPI2 to prevent this from occurring:
http://git.gnome.org/browse/at-spi2-atk/commit/?id=5ca9cae5d42df1109550e05e8bb06ecd8b009f70

All that remains is to figure out why Orca is presenting the wrong cells sometimes. Benjamin suggested that might also be a Gtk+ issue. I will dig a bit further, however.
Comment 3 Joanmarie Diggs (IRC: joanie) 2012-02-10 21:48:08 UTC
I dug a bit further. We are getting some seriously bogus event.any_data from Gtk+ in object:active-descendant-changed events. Benjamin has since seen the problem.

<Company> i know what the problem is
<Company> a11y can't represent the focus
<Company> because treeviews can focus rows
<Company> and cells
<Company> so i guess we should just focus the first cell in the row
Comment 4 Joanmarie Diggs (IRC: joanie) 2012-02-11 14:54:05 UTC
The presentation of wrong cells has been fixed by Benjamin. I have tested and things are now accurate, hang-and-crash-free, and a bit snappier performance-wize. Yay!

http://git.gnome.org/browse/gtk+/diff/?id=194a48bd4ae12e1bb1561b43665c827b78a1bd70&id2=f33fe5b67775361c1c4fefa02baa1d331a167a87
Comment 5 Joanmarie Diggs (IRC: joanie) 2012-02-12 16:50:40 UTC
Turns out there was a regression resulting from some of the Gtk+ changes that would do nasty things like cause the Desktop to hang after pressing the OK buttin in the Orca Preferences dialog. Benjamin just fixed that. So for those distros picking and choosing their fixes, you'll also need:

http://git.gnome.org/browse/gtk+/commit/?id=90e65f30abef5841ade5ab1494e8c5bf79f2baf4