Assertion failure: false (MOZ_ASSERT_UNREACHABLE: Children of not selected deck panel are not accessible.)

RESOLVED FIXED in Firefox 68

Status

()

defect
P2
normal
RESOLVED FIXED
8 months ago
Last month

People

(Reporter: m_kato, Assigned: eeejay)

Tracking

unspecified
mozilla69
x86_64
Windows 10
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox68 fixed, firefox69 fixed)

Details

Attachments

(1 attachment)

When I run debug build on my Windows 10 workstation, this assertion always occurs on about:preferences...
Maybe, my environment has ATOK IME (https://en.wikipedia.org/wiki/ATOK) that access a11y API, this occurs.

Assertion failure: false (MOZ_ASSERT_UNREACHABLE: Children of not selected deck panel are not accessible.), at c:/Development/hg.mozilla.org/mozilla-central/accessible/generic/Accessible.cpp:366
#01: mozilla::a11y::Accessible::State (c:\Development\hg.mozilla.org\mozilla-central\accessible\generic\Accessible.cpp:1215)
#02: mozilla::a11y::AccessibleWrap::get_accState (c:\Development\hg.mozilla.org\mozilla-central\accessible\windows\msaa\AccessibleWrap.cpp:581)
#03: NdrInterfacePointerMemorySize[C:\WINDOWS\System32\RPCRT4.dll +0x77863]
#04: NdrStubCall2[C:\WINDOWS\System32\RPCRT4.dll +0x145b1]
#05: NdrStubCall3[C:\WINDOWS\System32\RPCRT4.dll +0x55473]
#06: CStdStubBuffer_Invoke[C:\WINDOWS\System32\combase.dll +0xab2b3]
#07: CStdStubBuffer_Invoke[C:\WINDOWS\System32\RPCRT4.dll +0x5980b]
#08: CoGetCurrentLogicalThreadId[C:\WINDOWS\System32\combase.dll +0x99a93]
#09: CoGetCurrentLogicalThreadId[C:\WINDOWS\System32\combase.dll +0x99884]
#10: CoGetMalloc[C:\WINDOWS\System32\combase.dll +0xae536]
#11: CoRegisterPSClsid[C:\WINDOWS\System32\combase.dll +0x53a75]
#12: CoWaitForMultipleHandles[C:\WINDOWS\System32\combase.dll +0x7b512]
#13: CoUnmarshalInterface[C:\WINDOWS\System32\combase.dll +0x60c40]
#14: CoUnmarshalInterface[C:\WINDOWS\System32\combase.dll +0x613f1]
#15: CoUnmarshalInterface[C:\WINDOWS\System32\combase.dll +0x70721]
#16: DispatchMessageW[C:\WINDOWS\System32\user32.dll +0xca66]
#17: DispatchMessageW[C:\WINDOWS\System32\user32.dll +0xc582]
#18: nsAppShell::ProcessNextNativeEvent (c:\Development\hg.mozilla.org\mozilla-central\widget\windows\nsAppShell.cpp:554)
#19: nsBaseAppShell::OnProcessNextEvent (c:\Development\hg.mozilla.org\mozilla-central\widget\nsBaseAppShell.cpp:291)
#20: nsThread::ProcessNextEvent (c:\Development\hg.mozilla.org\mozilla-central\xpcom\threads\nsThread.cpp:1160)
#21: NS_ProcessNextEvent (c:\Development\hg.mozilla.org\mozilla-central\xpcom\threads\nsThreadUtils.cpp:530)
#22: mozilla::ipc::MessagePump::Run (c:\Development\hg.mozilla.org\mozilla-central\ipc\glue\MessagePump.cpp:97)
#23: MessageLoop::RunHandler (c:\Development\hg.mozilla.org\mozilla-central\ipc\chromium\src\base\message_loop.cc:319)
#24: MessageLoop::Run (c:\Development\hg.mozilla.org\mozilla-central\ipc\chromium\src\base\message_loop.cc:299)
#25: nsBaseAppShell::Run (c:\Development\hg.mozilla.org\mozilla-central\widget\nsBaseAppShell.cpp:160)
#26: nsAppShell::Run (c:\Development\hg.mozilla.org\mozilla-central\widget\windows\nsAppShell.cpp:420)
#27: nsAppStartup::Run (c:\Development\hg.mozilla.org\mozilla-central\toolkit\components\startup\nsAppStartup.cpp:291)
#28: XREMain::XRE_mainRun (c:\Development\hg.mozilla.org\mozilla-central\toolkit\xre\nsAppRunner.cpp:4791)
#29: XREMain::XRE_main (c:\Development\hg.mozilla.org\mozilla-central\toolkit\xre\nsAppRunner.cpp:4936)
#30: XRE_main (c:\Development\hg.mozilla.org\mozilla-central\toolkit\xre\nsAppRunner.cpp:5028)
#31: NS_internal_main (c:\Development\hg.mozilla.org\mozilla-central\browser\app\nsBrowserApp.cpp:315)
#32: wmain (c:\Development\hg.mozilla.org\mozilla-central\toolkit\xre\nsWindowsWMain.cpp:143)
#33: __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
#34: BaseThreadInitThunk[C:\WINDOWS\System32\KERNEL32.DLL +0x17e94]
#35: RtlUserThreadStart[C:\WINDOWS\SYSTEM32\ntdll.dll +0x67ad1]
Priority: -- → P3
From a user perspective, this causes the text of inactive deck panels to be exposed. This is particularly problematic after bug 1429940, since the intention is now that Preferences can be browsed like a document. For example, in the Updates section, I see:

Keep Nightly up to date for the best performance, stability, and security.
Version 65.0a1 (2018-12-07) (64-bit) What’s new
Show Update History…
Restart to update Nightly
Checking for updates…Applying update…Update failed. Download the latest versionUpdates disabled by your system administratorNightly is up to dateNightly is being updated by another instanceUpdates available at You can not perform further updates on this system. Restarting…

We have code in nsAccessibilityService::CreateAccessible to prevent inactive deck panels from being created. That also prevents recursion into their subtrees. However, this doesn't seem to work for these text nodes, even though the label elements are pruned. My guess is that the text nodes are created after the initial a11y tree update. This code doesn't handle descendants, only direct children of the deck, so it won't catch descendants that are added after the initial update.
Priority: P3 → P2
Assignee: nobody → eitan
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f0d9b81a5aed
Don't create accessibles for unselected deck panel descendants. r=Jamie
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla69
See Also: → 1551224
Blocks: 1551224
See Also: 1551224

Please nominate this for Beta approval when you get a chance. It grafts cleanly as-landed.

Flags: needinfo?(eitan)

Eitan is on PTO. I'll nominate it.

Flags: needinfo?(eitan)

Comment on attachment 9065756 [details]
Bug 1506514 - Don't create accessibles for unselected deck panel descendants. r?Jamie!

Beta/Release Uplift Approval Request

  • User impact if declined: Screen reader users will see (and potentially be confused by) text that isn't actually visible (nor intended to be seen) in the Updates section of Preferences and probably other areas. Also, without this patch, the URL bar accessibility test frequently triggers a related assertion.
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Only affects a specific area of XUL accessibility. Covered by automated tests.
  • String changes made/needed: None.
Attachment #9065756 - Flags: approval-mozilla-beta?

Comment on attachment 9065756 [details]
Bug 1506514 - Don't create accessibles for unselected deck panel descendants. r?Jamie!

a11y fix for 68.0b9

Attachment #9065756 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
You need to log in before you can comment on or make changes to this bug.