Closed Bug 1782151 Opened 10 months ago Closed 10 months ago

[CTW] Assertion failure: mCachedFields, at .../accessible/ipc/RemoteAccessibleBase.cpp:403


(Core :: Disability Access APIs, defect)




105 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox-esr102 --- disabled
firefox103 --- disabled
firefox104 --- disabled
firefox105 --- fixed


(Reporter: Jamie, Assigned: Jamie)




(Keywords: regression, Whiteboard: [ctw-m3])


(1 file)

I'm seeing this sometimes when loading/refreshing/moving away from some pages; e.g.

Assertion failure: mCachedFields, at C:/Users/jamie/src/gecko/accessible/ipc/RemoteAccessibleBase.cpp:403
#01: mozilla::a11y::RemoteAccessibleBase<mozilla::a11y::RemoteAccessible>::RetrieveCachedBounds (C:\Users\jamie\src\gecko\accessible\ipc\RemoteAccessibleBase.cpp:403)
#02: mozilla::a11y::RemoteAccessibleBase<mozilla::a11y::RemoteAccessible>::BoundsWithOffset (C:\Users\jamie\src\gecko\accessible\ipc\RemoteAccessibleBase.cpp:505)
#03: mozilla::a11y::RemoteAccessibleBase<mozilla::a11y::RemoteAccessible>::Bounds (C:\Users\jamie\src\gecko\accessible\ipc\RemoteAccessibleBase.cpp:613)
#04: mozilla::a11y::RemoteAccessible::Bounds (C:\Users\jamie\src\gecko\accessible\ipc\win\RemoteAccessible.cpp:233)
#05: mozilla::a11y::MsaaAccessible::accLocation (C:\Users\jamie\src\gecko\accessible\windows\msaa\MsaaAccessible.cpp:1530)
#06: nvdaInProcUtils_winword_expandToLine[C:\Program Files (x86)\NVDA\lib64\alpha-23364,b7dd32fc\nvdaHelperRemote.dll +0x714d4]

It's entirely possible that mCachedFields might be null when a client tries to query the location because the cache is pushed separately from the tree and a client call could arrive between those two IPDL calls. Before bug 1771271, we allowed mCachedFields to be null on this, but not on an ancestor. After bug 1771271, we allow (but assert for) null in both cases.

In bug 1771271, we weren't sure why mCachedFields should be null on an ancestor. However, this is probably possible in the case of OOP iframes, since IPDL calls from both documents could be interspersed.

I think we should just remove the assert.

This is possible if a client query arrives between the two IPDL calls for the tree and the cache.
This might even happen for an ancestor in the case of an OOP iframe, where IPDL calls for the two documents might be interspersed.

Summary: [CTW] Assertion failure: mCachedFields, at C:/Users/jamie/src/gecko/accessible/ipc/RemoteAccessibleBase.cpp:403 → [CTW] Assertion failure: mCachedFields, at .../accessible/ipc/RemoteAccessibleBase.cpp:403

Set release status flags based on info from the regressing bug 1771271

Pushed by
Don't assert that mCachedFields isn't null in RemoteAccessibleBase::RetrieveCachedBounds. r=morgan
Closed: 10 months ago
Resolution: --- → FIXED
Target Milestone: --- → 105 Branch
You need to log in before you can comment on or make changes to this bug.