Reported by jteh on 2008-02-12 11:23
NVDA freezes when a user selects Change or Remove for some programs in the Add or Remove Programs control panel applet in Windows XP.
Steps to reproduce
Go to the Add or Remove Programs applet in Control Panel.
Cursor to an arbitrary item in the list. Note that this does not happen for all applications. The issue can be reproduced with 7-Zip.
Tab to the Remove button and activate it.
NVDA freezes. Apparently, in earlier versions (not sure how long ago), NVDA did freeze, but alt+tabbing seemed to bring it back to life. This is no longer the case.
This does not happen with JAWS or System Access, but it does happen with Narrator.
I think this did happen with JAWS a while back, but am uncertain.
Commonality: I think JAWS and System Access both work in-process.
The problem appears to be that when the application to change/remove the program is launched, the Add or Remoe Programs applet blocks.
Subsequently, any out-of-process accessibility requests (and probably all window messages) block. This is the cause of the freeze.
Somehow lose all references to IAccessible objects in this applet once the button is pressed.
Avoiding access to any objects in the applet should hopefully prevent the freeze.
Unfortunately, i have no idea how to do this, particularly if we want to cover all cases: user pressing space, enter, activating with the navigator, mouse, etc. How do we know when the button has been pressed?
The text was updated successfully, but these errors were encountered:
Comment 2 by jteh on 2008-05-19 23:59
We still don't have a solution to this problem. However, after the merge of the eventRestructure branch, things seem to have improved slightly. There is now at least a work around for the freeze in Windows XP Add or Remove Programs. When a button is activated and NVDA freezes, press alt+tab four times. Note that alt should be released after each press.
Comment 3 by jteh on 2008-05-30 00:45
This is definitely a critical issue, but we don't know of a fix and we probably won't find one before 0.6. There is a work around as described above.
Milestone changed from 0.6 to None