Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVDA 2012.2.1 seems to lock-up for Java Access Bridge v2.0.3 on paging #2753

Closed
nvaccessAuto opened this issue Oct 27, 2012 · 16 comments
Closed

Comments

@nvaccessAuto
Copy link

Reported by vsfoote on 2012-10-27 05:31
Environment:

Windows 7, 64-bit
NVDA 2012.2.1
JRE 1.7u9 (32-bit, with jabswitch /enabled and a JAVA_HOME var set to install directory, and an entry to JAVA_HOME\bin in PATH)
LOdev 3.6 (2012-10-25_19.15.46 build)
LibO 3.5.7
Apache OpenOffice 3.4.1
IBM Symphony 3.0.1

Test document:
NVDA 2012.2.1 User Guide ( C:\Program Files (x86)\NVDA\documentation\en\userGuide.html saved as .ODT text)

This may already be a know NVDA issue as I am a casual user. I did a quick searh of NVDA tickets and found nothing recent.

I've noticed that with JAB v.2.0.3 of JRE 1.7u9 NVDA would freeze (stop speaking) when paging to next screen of document. For the test document above, it happens with both LibreOffice 3.5.7, LOdev 3.6 and Apache OpenOffice 3.4.1--all dependent on Java Accessibility -- Java Access Bridge mappings of UNO Accessibility roles.

However, it does not happen when viewing the same test document with IBM Symphony 3.0.1.

Strongly suggests that with JAB v2.0.3 there is an issue with Java Accessibility API role mappings being limited to current screen only. And on move to next page, there is either no precessing of page structure or there is excessive delay/time out of Java Access Bridge rendering of UNO Accessibility. Either way it seems like NVDA 2012.2.1 is unusable with multi-page documents that in Java Accessibility API based applications. I receive a Windows "NVDA has stopped responding" notice. Closing the document and the office product releases the hang and NVDA resumes functioning for other apps in the Windows shell.

Conversely, the IAccessible2 API of the Symphony 3.0.1 writer exhibits no delay, or lockup of NVDA when paging within a document. Not sure if that is simply more responsive that Java JRE, or if the entire document is parsed for exposed accessibility roles and cached for NVDA use.

Don't know if this is a NVDA regression caused by the JAB v.2.0.3 now bundled with JRE > 1.7u6 and NVDA 2012.2.1, or if it has is a known issue also manifested in JAB v2.0.2 and has affected multiple builds of NVDA but not been reported.

Happy to fill requests for any additional debug steps required.

V Stuart Foote
University of Texas at San Antonio
LibreOffice Project QA Volunteer

@nvaccessAuto
Copy link
Author

Comment 1 by vsfoote on 2012-10-27 20:01
Went a head and tested with 2012.3beta3, same issues.

Seems like NVDA looses the caret focus during paging actions and can't reestablish.

@nvaccessAuto
Copy link
Author

Comment 2 by jteh on 2012-10-27 22:45
Can you please provide exact steps to reproduce; e.g. what you were pressing or clicking at the time the freeze occurred? Also, please provide a log of this happening with log level set to input/output. See ReportingIssues#ProvidingLogFiles for details. Thanks.

@nvaccessAuto
Copy link
Author

Attachment vsfoote_20121027_nvda2012.3beta3_LibO357_JAB_errorOnPageMovement_debugMode.log added by vsfoote on 2012-10-28 04:56
Description:
annotated (edited) debug log LibO357 test document - NVDA error on page movement

@nvaccessAuto
Copy link
Author

Attachment vsfoote_20121027_nvda2012.3beta3_AOOo341_JABerrorOnPageMovement_debugMode.log added by vsfoote on 2012-10-28 04:57
Description:
annotated (edited) debug log AOOo341 test document - NVDA error on page movement

@nvaccessAuto
Copy link
Author

Comment 3 by vsfoote on 2012-10-28 05:15
Using a Java Accessability API based accessibility bridge application - LibreOffice 3.5.7 or LibreOffice Developmental build LOdev 3.6, or Apache OpenOffice 3.4.1

Java Runtime Environment 1.7 update 9, with Java Access Bridge enabled. Verify JAB function with JavaMonkey-32 & JavaFerret-32. Lanuch NVDA. General UIAccessible and IAccessible/MSAA reading.

Launch one of the JAB based office suites. Open a test document (the NVDA 2012.2.1 user guide from documentation, saved as .ODT). NVDA will read the Windows frame of the application. And then pause a few moments (parsing accessibility objects in the frame I assume) and then read the document with cursor controls and +.

Freeze occurs consistently in all three Office apps when the frame is scrolled with mouse action, or with use of button.

debug level logs (attached) show these errors:

--Apache OpenOffice 3.4.1--
ERROR - eventHandler.executeEvent (23:14:18):
error executing event: gainFocus on <NVDAObjects.Dynamic_DialogJAB object at 0x05973710> with extra args of {}

--LibreOffice 3.5.7--
ERROR - scriptHandler.executeScript (23:38:57):
error executing script: <bound method CompoundDocument.script_caret_moveByLine of <compoundDocuments.CompoundDocument object at 0x056FEA70>> with gesture u'page down'

Sometimes the Office product will freeze, sometimes it still has page and cursor controls--but NVDA is always silent and does not resume even if allowed minutes.

Forced closing the Office product, restores the NVDA session. But at least a couple of times NVDA closed with out an exit command, but I did not log those with debug mode set.

@nvaccessAuto
Copy link
Author

Attachment vsfoote_20121028_nvda2012.2.1_JRE1.7u9_cleanInstall_LOdev36_JAB_errorOnPageMovement__debug.log added by vsfoote on 2012-10-28 17:59
Description:
debug level log of freeze on page down in JAB LOdev 3.6 with clean install NVDA 2012.2.1 and 32bit JRE 1.7u9 with jabswitch /enabled

@nvaccessAuto
Copy link
Author

Comment 4 by vsfoote on 2012-10-28 18:20
Performed a complete removal of all Java JRE and cleaned registry. Also complete removal of NVDA 2012.3.1beta3.

Rebooted.

Install of JRE 1.7u9 with new download of 32-bit windows offline installer--run from Administrator account. Set JAVA_HOME environment variable and make appropriate ";%JAVA_HOME%\bin" entry in PATH variable. Enable Java Access Bridge v2.0.3 with "jabswitch /enable"

Install NVDA 2012.2.1 and launch. Launch LOdev 3.6 and open test document. Enable debug mode logging from NVDA console -> Preferences -> General settings... tab.

Point NVDA reader into the LibreOffice writer session, pauses while frame refreshes, then starts to speak. Navigate up and down document with cursor and +down cursor. Speaks with out issue. Navigate with positions to last line of current page of document and speaks. A second moves document view into next page--but NVDA stops speaking. Does not refresh or resume. Still able to move cursor in document and and respond with document moves--but NVDA remains mute.

Close the test document, and exit LOdev 3.6--NVDA immediately resumes speaking objects and responds to mouse and cursor movement. Exit NVDA to close out log.

Edit log to remove crud DEBUG lines--annotate with ## comments.

Specific ERRORs were:

DEBUG - JABHandler.JABContext.getAccessibleTextLineBounds (12:30:41):
line bounds: tempStart 1631196, tempEnd 488283852

ERROR - scriptHandler.executeScript (12:30:41):
error executing script: <bound method CompoundDocument.script_caret_moveByLine of <compoundDocuments.CompoundDocument object at 0x05988430>> with gesture u'page down'
Traceback (most recent call last):
File "scriptHandler.pyo", line 165, in executeScript
File "editableText.pyo", line 101, in script_caret_moveByLine
File "editableText.pyo", line 98, in _caretMovementScriptHelper
File "editableText.pyo", line 84, in caretScriptPostMovedHelper
File "compoundDocuments.pyo", line 290, in expand
File "textInfos\offsets.pyo", line 321, in expand
File "textInfos\offsets.pyo", line 303, in getUnitOffsets
File "NVDAObjects\JAB__init
.pyo", line 132, in _getLineOffsets
File "JABHandler.pyo", line 320, in getAccessibleTextLineBounds
File "JABHandler.pyo", line 24, in _errcheck
RuntimeError: Result 0

DEBUGWARNING - NVDAObjects.JAB.JAB.event_stateChange (12:30:41):
Error getting accessible context info, probably dead object

DEBUGWARNING - NVDAObjects.DynamicNVDAObjectType.call (12:30:41):
Invalid NVDAObject: Could not get accessible context info
Stack trace:
File "nvda.pyw", line 155, in
File "core.pyo", line 339, in main
File "wx_core.pyo", line 8010, in MainLoop
File "wx_core.pyo", line 7306, in MainLoop
File "core.pyo", line 315, in Notify
File "JABHandler.pyo", line 509, in pumpAll
File "queueHandler.pyo", line 47, in flushQueue
File "JABHandler.pyo", line 457, in event_stateChange
File "NVDAObjects__init__.pyo", line 67, in call

Log for this session following a clean install of 2012.2.1 and JRE attached.

@nvaccessAuto
Copy link
Author

Comment 5 by jteh on 2012-11-02 05:32
Even once I get accessibility enabled (which is not trivial for a blind user with OOo 3.4.1), I can't seem to access the document area of Writer at all. Strangely, I can access menu items, etc. and the tree view items in the Options dialog, but tabbing through the dialog reports nothing either. I'm told this might work with JRE 6 (I'm using JRE 7 here). Unfortunately, I don't have time to test different versions just now.

@nvaccessAuto
Copy link
Author

Comment 6 by vsfoote on 2012-11-02 07:55
James,

Suspect you really do not have the JAB enabled and/or AT activated in the office product.

What you describe is exactly the situation many frustrated NVDA users report as experiencing. Windows UI reads the frame elements, but no accessibility roles are being exposed as the JAB is not running and/or AT is not correctly enabled in the office application.

That situation can be tested with the JavaFeret-32 and JavaMonkey-32 programs. Java Monkey will expose the AT document tree and roles being reported by JAB to Java Accessibility API. Running a demo project--oracle suggests the SwingSet2.jar--and refreshing JavaFeret/JavaMonkey reveals the AT tree when JAB is fully functional.

Using JRE 1.6u37 has the advantage of letting you still use the Java Access Bridge v2.0.2, made easier by Jamal Mazrui's Inno installer package for JAB that finishes with a functional accessibility with a few exceptions.

And with JRE 1.7u6 and later, it installs Java Access Bridge v 2.0.3 and integrates the JAB installation with the JRE. It is enabled from a windows command prompt "Run as administrator" by issuing the command jabswitch /enable.

But what folks miss is that unless you establish the path to the JRE in the system path, executable components and configuration details of the JRE won't be found. I think this is an oversight by the Oracle developers. You would establish a %JAVA_HOME% variable when working with the JDK, but for users of the JRE it is not provided and I think should be.

See if setting JAVA_HOME=C:\Program Files (x86)\Java\jre7 and adding ";%JAVA_HOME\bin" to your system PATH actually allows you to run "jabswitch /enable" from a command prompt, and if that results in accessibility really starting.

The JavaFerret-32 and JavaMonkey-32 utilities are bundled with the Java Access Bridge v2.0.2 installer, and also with the JWin package installer. They serve similar roles to the accesorciser in Linux GNOME, or accevent & inspect from the Windows SDK.

If you, Mick or Matthew could figure some efficient way to initially configure and then test on launch for Java JRE and function of JAB as a plug-in module of NVDA you would solve a major irritation for MANY of your users.

Stuart

@nvaccessAuto
Copy link
Author

Comment 7 by jteh (in reply to comment 6) on 2012-11-02 09:07
Replying to vsfoote:

Suspect you really do not have the JAB enabled and/or AT activated in the office product.

I'm sure of this, unless it can be "partially" enabled somehow; see below.

What you describe is exactly the situation many frustrated NVDA users report as experiencing. Windows UI reads the frame elements, but no accessibility roles are being exposed as the JAB is not running and/or AT is not correctly enabled in the office application.

Not quite. First, I've confirmed that JAB itself is enabled using the Java Control Panel, which is inaccessible if JAB isn't enabled correctly. Second, after enabling accessibility in OOo, the situation did change. The bizarre part is that I do see JAB objects and I do see correct objects in menus; correct roles, etc. The spreadsheet even reads in OOo Calc, which would be impossible if JAB wasn't enabled correctly. However, certain objects just never get focus, such as the document area in Writer.

And with JRE 1.7u6 and later, it installs Java Access Bridge v 2.0.3 and integrates the JAB installation with the JRE. It is enabled from a windows command prompt "Run as administrator" by issuing the command jabswitch /enable.

You can also do it from the Ease of Access Center, which is what I did. See this page for details.

But what folks miss is that unless you establish the path to the JRE in the system path, executable components and configuration details of the JRE won't be found.

I didn't do this, but as I said above, JAB is definitely working and OOo accessibility is partially working.

If you, Mick or Matthew could figure some efficient way to initially configure and then test on launch for Java JRE and function of JAB as a plug-in module of NVDA you would solve a major irritation for MANY of your users.

It's already possible to detect whether JAB is working correctly in NVDA, as JAB objects won't be exposed if it isn't.

@nvaccessAuto
Copy link
Author

Comment 8 by jteh on 2012-12-26 02:11
The issues I noted with JRE 7 in comment:5 have been experienced by other users and are covered by #2870.

@nvaccessAuto
Copy link
Author

Comment 9 by vsfoote on 2012-12-26 23:48
James,

With a JRE and Java Accessibility installed, with Java Access Bridge enabled NVDA is sporadic in its handling of accessibility roles. I'm pretty sure this is an NVDA issue, that is reproducible.

You can explore the exposed Java Accessibility API roles with JavaMonkey/JavaFeret. But when launching the document if NVDA does not detect--and announce--its position at the "Document View" there is no way to navigate down into the document and expose roles. This detection of "Document View" is what is sporadic.

With LibreOffice opened to a test document, if "Document View" is not detected, NVDA + announces "No object inside", and navigating up positions the interface back to the LibreOffice frame and then up to the desktop. I can find no way to navigate back down into the document.

I find I have to close LibreOffice, and NVDA. Then I must relaunch NVDA, and then LibreOffice and then Open or Create a new document to finally get NVDA to reposition into the "Document View" of the open document. To me that seems to be the issue folks are having with bug #2870.

Of course the issue of this bug #2753--the page down beyond the end of the displayed screen (what is held in the Java Accessibility API buffer) is still disrupting NVDA's processing of the document flow remains.

Stuart

@nvaccessAuto
Copy link
Author

Comment 10 by jteh (in reply to comment 9) on 2012-12-27 00:00
Replying to vsfoote:

But when launching the document if NVDA does not detect--and announce--its position at the "Document View" there is no way to navigate down into the document and expose roles. This detection of "Document View" is what is sporadic.

...

To me that seems to be the issue folks are having with bug #2870.

There is one key point you're missing here. Several users (not just one user) have tested with JRE 1.6 and said it works as expected, but had the same problems with JRE 1.7. That would seem to suggest there is a problem related to JRE 1.7.

@nvaccessAuto
Copy link
Author

Comment 11 by vsfoote on 2012-12-29 00:27
Yes I can confirm there is a functional difference between JRE 1.6 and JRE 1.7, with JRE 1.6 rendering accessibility roles and object that JRE 1.7 is not even though the exposed roles and objects are identical.

Suggests issues with Java Accessiblity API interpretation of Java Access Bridge roles/objects rendered under JRE 1.7

However, issues of buffering Java Accessibility flows-from -- flows-to relationships and handling of document structure when paging remain under this NVDA bug.

@bhavyashah
Copy link

@jcsteh Does this still occur with NVDA 2017.2 and the latest version of Java Access Bridge? Also, in case this proves to be a JAB bug, feel free to add the NeedsExternalFix label.

@jcsteh
Copy link
Contributor

jcsteh commented Aug 14, 2017

No longer relevant because this refers to OpenOffice/LibreOffice with Java Access Bridge and that implementation has since been replaced by IAccessible2. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants