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 688057 - A page that hangs orca
A page that hangs orca
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: general
unspecified
Other Linux
: Normal normal
: ---
Assigned To: Orca Maintainers
Orca Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-11-10 18:49 UTC by Jose Vilmar Estacio de Souza
Modified: 2012-11-19 21:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
backtrace (43.76 KB, text/plain)
2012-11-10 21:06 UTC, Joanmarie Diggs (IRC: joanie)
Details

Description Jose Vilmar Estacio de Souza 2012-11-10 18:49:16 UTC
To reproduce try the following:

1: Using firefox open the following url:
https://wiki.archlinux.org/index.php/Beginners_Guide#Installing_on_a_virtual_machine

2: After the page is loaded go to begin of the page pressing ctrl+home.

3: Press shift+h.

In my machine orca stays completely mute and I have to kill firefox.
After kill firefox, orca returns to normal state.

I am running ubuntu 12.10, gnome-shell and firefox 16.0.2.

In addition I found in the debug output the following:

vvvvv PROCESS <ENUM ATSPI_KEY_PRESSED_EVENT OF TYPE EVENTTYPE> 'H' (43) vvvvv
KEYBOARDEVENT: type=<enum ATSPI_KEY_PRESSED_EVENT of type EventType>
                id=72
                hw_code=43
                modifiers=1
                event_string=(H)
                keyval_name=(H)
                is_text=True
                timestamp=28062503
                time=1352540244.434481
                keyType=printable
                shouldEcho=True

IGNORING EVENT DUE TO TIMESTAMP

Traceback (most recent call last):
  • File "/data/software/orca3/dev/lib/python3.2/site-packages/orca/structural_navigation.py", line 849 in goObject
    predicate)
  • File "/data/software/orca3/dev/lib/python3.2/site-packages/orca/structural_navigation.py", line 960 in _findPrevByMatchRule
    lastObj = self._findLastObject(document)
  • File "/data/software/orca3/dev/lib/python3.2/site-packages/orca/scripts/toolkits/Gecko/structural_navigation.py", line 95 in _findLastObject
    return self._script.getLastObject(ancestor)
  • File "/data/software/orca3/dev/lib/python3.2/site-packages/orca/scripts/toolkits/Gecko/script.py", line 3423 in getLastObject
    lastObj = self.findNextObject(lastChild, documentFrame)
  • File "/data/software/orca3/dev/lib/python3.2/site-packages/orca/scripts/toolkits/Gecko/script.py", line 4686 in findNextObject
    while index < candidate.parent.childCount:
AttributeError: 'NoneType' object has no attribute 'childCount'

SPEECH OUTPUT: 'Wrapping to bottom.'
SPEECH OUTPUT: 'No more headings.'
^^^^^ PROCESS <ENUM ATSPI_KEY_PRESSED_EVENT OF TYPE EVENTTYPE> 'H' (43) ^^^^^
Comment 1 Joanmarie Diggs (IRC: joanie) 2012-11-10 21:05:53 UTC
Turns out that Orca isn't crashing. It's just going completely non-responsive. :( Using GDB to get a backtrace, it seems that something bad may be happening when atspi_accessible_get_parent() is called. Here's the top of the trace (I'll attach the rest as it's pretty huge).

  • #0 pthread_once
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S line 45
  • #1 __dlerror
    at dlerror.c line 71
  • #2 fetch_dlerror
    at gmodule-dl.c line 81
  • #3 _g_module_symbol
    at gmodule-dl.c line 146
  • #4 g_module_symbol
    at gmodule.c line 847
  • #5 g_typelib_symbol
    at girepository/gitypelib.c line 2305

Comment 2 Joanmarie Diggs (IRC: joanie) 2012-11-10 21:06:51 UTC
Created attachment 228655 [details]
backtrace
Comment 3 Joanmarie Diggs (IRC: joanie) 2012-11-11 17:21:54 UTC
In terms of the Orca hang, I was able to work around more Gecko hierarchy brokenness by adding a couple of sanity checks. 

master: http://git.gnome.org/browse/orca/commit/?id=ad130ca6cbbcfe1851ddab97de54ecad007e1b58

gnome-3-6 branch: http://git.gnome.org/browse/orca/commit/?h=gnome-3-6&id=8c28bcbdfa22d9d13469508487eeccba46e042e1
Comment 4 Mike Gorse 2012-11-19 21:37:24 UTC
I just pushed a fix to at-spi2-core (commit 099154). Atspi_accessible_get_index_in_parent was always returning -1 if the object's accessible_parent field was set to NULL, but accessible_parent is not guaranteed to hold a pointer to the object's parent (it will not if the parent has never been fetch/cached).