GNOME Bugzilla – Bug 669794
Orca + Trees/Tables == incorrect cells presented, crashes, and hangs
Last modified: 2012-02-12 16:50:40 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.
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
+ Trace 229637
Thread 1 (Thread 0x7ffff658d980 (LWP 17660))
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.
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
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
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