-
-
Notifications
You must be signed in to change notification settings - Fork 661
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
wxAssertion error when closing braille or speech settings panels. #12220
Comments
To give you more hints: this issue started to appear after introducing commit which included fetching accessible labels from wx directly. |
I can replicate this for the following settings categories, but not for the
others:
Speech
Braille
Voice
|
Is this still reproducible? For me it isn't but I was never able to reproduce this on my system. |
This is reproducible with the error log
ERROR - unhandled exception (11:33:41.769) - MainThread (8416):
wx._core.wxAssertionError: C++ assertion ""GetWindow() != 0"" failed at ..\..\src\common\wincmn.cpp(3919) in wxWindowAccessible::GetDescription():
The above exception was the direct cause of the following exception:
SystemError: <class 'wx._core.WindowDestroyEvent'> returned a result with an error set
|
I can reproduce this, and I have been investigating. Here is what I have found
I have tried to create a minimal test app, however could reproduce the issue. When attaching VisualStudio Debugger to NVDA, the issue is no longer reproducible. |
There doesn't seem to have been many recent changes in wxAccessible in the wxWidgets repo. I suspect that we only now get this assertion because wxPython has enabled accessibility in the build of wxWidgets it includes (and we have recently updated to wxPython 4.1.1) but I have not confirmed this. wxPython 4.1.1 seems to be using commit 493cc35 of wxWidgets Debug symbols for Python 3.8-32bit build of wxPython 4.1.1 PR Don't create wxWindowAccessible by default #340 changes the assumptions about wxAccessible, allowing it to return PR wxDVC accessibility tweaks #368 which enables building Accessibility features in wxWidgets by default on Windows) |
wxWidgets ticket: https://trac.wxwidgets.org/ticket/19145 |
@feerrenrut Would you be able to confirm that this issue goes away when reverting 57e02ca As this commit seems the most logical candidate to me. Perhaps using |
* No reproduce if making the SettingsPanel the parent of the ExpandoTextCtrl
What negative effects are there to doing that?
|
> * No reproduce if making the SettingsPanel the parent of the ExpandoTextCtrl
What negative effects are there to doing that?
Oh, never mind, I think I see--it breaks RTL.
|
Yep
I had confirmed this: Here is the alpha build prior to the introduction of 57e02ca https://ci.appveyor.com/api/buildjobs/gqw4xxr46e67t1yh/artifacts/output%2Fnvda_snapshot_alpha-22114%2Ced5fca6b.exe I also tested disabling our own accPropServer before 57e02ca was introduced. The problem is reproducible in both cases. |
See issue #12220 There was a wxAssertion error when closing braille or speech settings panels. ERROR - unhandled exception (09:33:35.263) - MainThread (7112): wx._core.wxAssertionError: C++ assertion ""GetWindow() != 0"" failed at ..\..\src\common\wincmn.cpp(3919) in wxWindowAccessible::GetDescription(): The above exception was the direct cause of the following exception: SystemError: <class 'wx._core.WindowDestroyEvent'> returned a result with an error set There is a lot more information about the investigation on the issue. This PR provides a workaround, the true cause of this assertion has not yet been determined. However in the meantime this PR will prevent the log error, and any additional instability in WX that may occur due to ending up in this situation.
Fixes: #12336 Fixes: #12220 # Summary of the issue: Issue#12220 Causes a wx assertion message when either the Braille or Speech settings panels are open. This seems to be related to the expando text control used on both panels. The assertion is in wx's accessibility code, which has been introduced in our latest upgrade of wxPython. The PR #12292 attempted to fix this by explicitly destroying the expando text control when closing. In #12292 it was missed that the onSave callback was also called for the apply button. # Description of how this pull request fixes the issue: While looking at adding an explicit close callback for panels, I noticed that Destroy was being called manually during the event handler. Scheduling a destroy call after the event handler seems to resolve this issue. As I understand, destroying children explicitly is not required. While here also: - Tidy onSave / onApply - Add type info for 'catIdToInstanceMap' and 'categoryClasses'
Steps to reproduce:
Actual behavior:
NVDA plays an error sound and produces the following exception, see log
Expected behavior:
NVDA should close this dialog without these types of exceptions and errors
System configuration
NVDA installed/portable/running from source:
installed
NVDA version:
NVDA version alpha-22123,8665526b
Windows version:
Using Windows version 10.0.19042 workstation
Name and version of other software in use when reproducing the issue:
Not applicable
Other information about your system:
Other questions
Does the issue still occur after restarting your computer?
yes
Have you tried any other versions of NVDA? If so, please report their behaviors.
Not applicable
If add-ons are disabled, is your problem still occurring?
Not applicable, NVDA core level
Did you try to run the COM registry fixing tool in NVDA menu / tools?
Not applicable
The text was updated successfully, but these errors were encountered: