nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.1k stars 634 forks source link

NVDA freezes when LibLouis component fails to process #2448

Closed nvaccessAuto closed 8 years ago

nvaccessAuto commented 12 years ago

Reported by aliminator on 2012-06-13 15:39 This happens when e.g. a braille table which is set in NVDA cannot be located or is malformed. In that case NVDA freezes; eventually speech may be still active. Nevertheless, NVDA becomes more unstable. This issue might be solved by catching eventual exceptions thrown by LibLouis and then falling back to NoBraille.

nvaccessAuto commented 12 years ago

Attachment de-de-comp8.ctb added by aliminator on 2012-07-04 08:08 Description: Defect German 8-dot computer braille table

nvaccessAuto commented 12 years ago

Comment 1 by jteh on 2012-06-13 17:07 Please provide an example of how to reproduce this. We already catch exceptions from liblouis. Note that if liblouis itself freezes or crashes, we can't work around this. Also, none of the tables bundled with liblouis (and thus NVDA) should cause this problem, so this isn't a problem for most users.

nvaccessAuto commented 12 years ago

Comment 2 by aliminator on 2012-07-04 08:20 Replacing the original braille table through this one and setting NVDA to 8-dot German computer braille causes the braille display not to be initialized. A complete freezing could not be observed anymore. This is the stack trace extracted from the log viewer: ERROR - eventHandler.executeEvent (10:11:52): error executing event: becomeNavigatorObject on <NVDAObjects.window.Desktop object at 0x050A6690> with extra args of {} Traceback (most recent call last): File "eventHandler.pyo", line 136, in executeEvent File "eventHandler.pyo", line 84, in init File "eventHandler.pyo", line 91, in next File "NVDAObjectsinit.pyo", line 791, in event_becomeNavigatorObject File "braille.pyo", line 1396, in handleReviewMove File "braille.pyo", line 1329, in _doNewObject File "braille.pyo", line 1130, in getFocusRegions File "braille.pyo", line 487, in update File "braille.pyo", line 343, in update File "louisinit.pyo", line 125, in translate RuntimeError: can't translate: tables 'braille-patterns.cti', inbuf Desktop Fenster, typeform None, cursorPos c_long(0), mode 20 ERROR - eventHandler.executeEvent (10:11:52): error executing event: becomeNavigatorObject on <NVDAObjects.window.Desktop object at 0x050A6690> with extra args of {} Traceback (most recent call last): File "eventHandler.pyo", line 136, in executeEvent File "eventHandler.pyo", line 84, in init File "eventHandler.pyo", line 91, in next File "NVDAObjectsinit.pyo", line 791, in event_becomeNavigatorObject File "braille.pyo", line 1396, in handleReviewMove File "braille.pyo", line 1329, in _doNewObject File "braille.pyo", line 1130, in getFocusRegions File "braille.pyo", line 487, in update File "braille.pyo", line 343, in update File "louisinit.pyo", line 125, in translate RuntimeError: can't translate: tables 'braille-patterns.cti', inbuf Desktop Fenster, typeform None, cursorPos c_long(0), mode 20 ERROR - core.main (10:11:52): Traceback (most recent call last): File "core.pyo", line 294, in main File "braille.pyo", line 1291, in message File "braille.pyo", line 343, in update File "louisinit.pyo", line 125, in translate RuntimeError: can't translate: tables 'braille-patterns.cti', inbuf NVDA ist bereit., typeform None, cursorPos c_long(0), mode 20 INFO - core.main (10:11:52): NVDA initialized

Maybe this should be displayed as e.g. "warning: error initialising braille table xy" or even the user should be warned.

nvaccessAuto commented 12 years ago

Comment 3 by jteh on 2012-07-06 23:24 Unfortunately, all we know is that a single translation failed. We don't know whether it was an initialisation error or a problem specific to translating a single string. Thus, all we can do for now is log it as an error.

nvaccessAuto commented 12 years ago

Comment 4 by jteh on 2012-07-06 23:25 Btw, you should probably use the lou_checktable tool before trying to use a table with NVDA.

nvaccessAuto commented 12 years ago

Comment 5 by jteh on 2012-09-24 21:32 This doesn't need to be user visible. Most users shouldn't be replacing tables like this, and if they do, they should have some idea of what they're doing.

I do agree it'd be nice to log a more useful message, but this isn't possible as noted in comment:3. Given other work that needs to be done in liblouis and the fact that the lou_checktable tool exists, I doubt this is going to change any time soon, so closing as cantfix. If this changes, this can be reopened. Changes: Added labels: cantfix State: closed