Assertion failure: IsAncestor(aOne, aTwo) || IsAncestor(aTwo, aOne), at /builds/worker/workspace/build/src/layout/painting/nsDisplayList.h:276
Categories
(Core :: Web Painting, defect, P3)
Tracking
()
People
(Reporter: jkratzer, Unassigned)
References
(Blocks 2 open bugs)
Details
(Keywords: assertion, testcase)
Crash Data
Attachments
(3 files, 1 obsolete file)
Comment 2•6 years ago
|
||
Comment 3•6 years ago
|
||
Comment 4•6 years ago
|
||
Updated•6 years ago
|
Comment 5•6 years ago
|
||
Comment 6•6 years ago
|
||
Updated•6 years ago
|
Comment 7•6 years ago
|
||
Comment 8•6 years ago
|
||
Comment 9•6 years ago
|
||
Comment 10•4 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #6)
nsDisplayListBuilder::mCurrentContainerASR still points to the ASR for the
outer scrollframe though,This is the bug, I think. mCurrentContainerASR should be nullptr.
This is because of these two lines
https://searchfox.org/mozilla-central/rev/ddd065ed26206d7ded61a4e5a35abb0cd6dbd9bc/layout/painting/nsDisplayList.cpp#438
https://searchfox.org/mozilla-central/rev/ddd065ed26206d7ded61a4e5a35abb0cd6dbd9bc/layout/painting/nsDisplayList.h#1352
If we change them to both to ignore the content clip asr (and hence remove the PickDescendant call) it fixes this bug. I don't quite understand the explanatory comment but this seems like an optimization? Or maybe not.
That change only fails on reftest
https://treeherder.mozilla.org/jobs?repo=try&revision=6634b9f85547c1d1d716d15497148fa4b0b2d7ae
REFTEST TEST-UNEXPECTED-FAIL | layout/reftests/layers/fixed-pos-scrolled-clip-opacity-layerize.html == layout/reftests/layers/fixed-pos-scrolled-clip-opacity-inside-layerize.html | failed reftest-assigned-layer: these elements are assigned to 2 different layers, instead of sharing just one layer: <div class="blueBox" reftest-assigned-layer="page-background">, <div class="absoluteCyanBox" reftest-assigned-layer="page-background">, these elements are assigned to 2 different layers, instead of sharing just one layer: <div class="blueBox" reftest-assigned-layer="page-background">, <div class="absoluteCyanBox" reftest-assigned-layer="page-background">
I'm not necessarily suggested we take that approach just recording what I learned.
Updated•4 years ago
|
Comment 12•4 years ago
|
||
The crash frequency increased at the end of February. Glenn, can you check what started this?
Comment 13•4 years ago
|
||
Do we have an approximate regression range for when this got worse? Eyeballing it seems like maybe 2021-02-23.
Comment 14•4 years ago
|
||
Based on the duplicate this could be from bug 1649668.
Comment 15•4 years ago
|
||
I think it's unlikely it's from that - because backdrop-filter is disabled by default, and only enabled if the user explicitly opts-in via about:config
, so I expect that very few users have that enabled, unless some large number of people recently enabled that pref for some reason?
I'm not sure how to find out with any confidence what it's from. Any ideas on how we would normally work out what might have caused something like that?
Unfortunately, although the eventual panic occurs in WR, it looks like this is probably from an invalid display list that Gecko is supplying, due to the assertion failure in DL building, which I don't have a good understanding of.
Updated•4 years ago
|
Reporter | ||
Comment 16•3 years ago
|
||
Reporter | ||
Comment 17•3 years ago
|
||
Reporter | ||
Comment 18•3 years ago
|
||
Reporter | ||
Updated•3 years ago
|
Comment hidden (obsolete) |
Comment 20•3 years ago
|
||
A Pernosco session is available here: https://pernos.co/debug/2ZzYXSnoJzjd9AE0875Y3w/index.html
It was created using the test case attached in comment 18.
Updated•3 years ago
|
Comment 21•3 years ago
|
||
(In reply to Jason Kratzer [:jkratzer] from comment #16)
Testcase found while fuzzing mozilla-central rev f4ad9b76e5f8 (built with:
--enable-debug --enable-fuzzing).Testcase can be reproduced using the following commands:
$ pip install fuzzfetch grizzly-framework
$ python -m fuzzfetch --build f4ad9b76e5f8 --debug --fuzzing -n firefox
$ python -m grizzly.replay ./firefox/firefox testcase.zip
Does this mean reproducing the crash requires more than just loading the testcase in the browser? If so, what else (in terms of interactions with the browser) does this replay script do?
Reporter | ||
Comment 22•3 years ago
|
||
(In reply to Botond Ballo [:botond] from comment #21)
Does this mean reproducing the crash requires more than just loading the testcase in the browser? If so, what else (in terms of interactions with the browser) does this replay script do?
No. Grizzly.replay is just used to automate launching the browser with the prefs included in testcase.zip and opening the testcase.
Updated•3 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 23•2 years ago
|
||
I think we have a workaround for this these days.
Updated•2 years ago
|
Description
•