Crash in mozilla::FrameLayerBuilder::WillEndTransaction
Categories
(Core :: Web Painting, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr60 | --- | unaffected |
firefox67 | --- | unaffected |
firefox68 | --- | fixed |
firefox69 | --- | fixed |
People
(Reporter: baffclan, Assigned: mattwoodrow)
References
(Regression)
Details
(Keywords: crash, csectype-uaf, regression)
Crash Data
Attachments
(1 file)
47 bytes,
text/x-phabricator-request
|
jcristau
:
approval-mozilla-beta+
|
Details | Review |
Updated•8 years ago
|
Comment 1•6 years ago
|
||
[Tracking Requested - why for this release]: Nominating since this is a new spike and a potential security issue.
This signature had a noticeable spike in 68.0b8, larger than what is shown currently on 67 release. Matt - Any ideas why we would have not a significant spike? This is what went in between b7 and b8: https://hg.mozilla.org/releases/mozilla-beta/pushloghtml?fromchange=FIREFOX_68_0b7_RELEASE&tochange=b25d2ea5cf47fc4e0c01214acad7c30162b1b1d8&full=1
Also I am marking this as security sensitive since many of the 68.0b8 signatures look like potential UAFs.
Comment 2•6 years ago
|
||
this first happened in 69.0a1 nightly build 20190527095441 and now in 68.0b8, which is pointing towards the changes from bug 1547624 as the source of the recent spike. urls in crash reports are commonly showing that this happened while attempting to print a page (about:printpreview).
Assignee | ||
Comment 3•6 years ago
|
||
Yeah, this is almost certainly bug 1547624, which we should probably back out of beta.
Thanks for the printpreview tip, I have a working theory, digging in more.
Updated•6 years ago
|
Assignee | ||
Comment 4•6 years ago
|
||
I looked at the crash dump, and this is definitely a UAF of the FrameLayerBuilder instance.
I think what's happening is we have duplicate display items (that both map to the same DisplayItemData, so we're configuring a single temporary LayerManager twice.
The second time we run CreateInactiveLayerData with the same LayerManager it creates a new FrameLayerBuilder (and deletes the old) one. The InactiveLayerData from the first run still has the raw pointer to the deleted FrameLayerBuilder.
I think we can do a quick fix to not hold the raw pointer, and look it up from the LayerManager when we need it.
That'll still be doing broken painting for the duplicate item case (which isn't a regression), so I want to try fix the underlying problem too.
Comment 5•6 years ago
|
||
Bug 1547624 backed out of beta: https://hg.mozilla.org/releases/mozilla-beta/rev/34a9ba95e9085caa5dd46f7aa78b6a7c43897fcb
Assignee | ||
Comment 6•6 years ago
|
||
Assignee | ||
Comment 7•6 years ago
|
||
The patch there is just a workaround, doesn't fix the broken painting or the real underlying issue.
I've filed bug 1558937 to fix this properly, and will include a test there (that locally reproduces an ASAN failure because of this bug, and this patch fixes).
Assignee | ||
Comment 8•6 years ago
|
||
Note that I'm not marking a dependency, since the testcase combined with this patch makes the problem pretty easy to reproduce. It's Nightly only now, but still probably worth avoiding.
Updated•6 years ago
|
![]() |
||
Comment 9•6 years ago
|
||
https://hg.mozilla.org/integration/autoland/rev/6f11e76d382220103cb9b65b06964429aeeb9010
https://hg.mozilla.org/mozilla-central/rev/6f11e76d3822
Updated•6 years ago
|
Comment 10•6 years ago
|
||
Do we want to uplift some combination of this / 1547624 / 1558937 to 68, or leave things as-is?
Assignee | ||
Comment 11•6 years ago
|
||
Comment on attachment 9071720 [details]
Bug 1348503 - Retrieve the FrameLayerBuilder pointer from the LayerManager when we need it. r?miko
Beta/Release Uplift Approval Request
- User impact if declined: We can't uplift bug 1547624 (an important scrolling regression) without this.
- Is this code covered by automated tests?: No
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: Bug 1547624
- Risk to taking this patch: Medium
- Why is the change risky/not risky? (and alternatives if risky): This patch is fairly simple, but bug 1547624 already had this regression, the code is complicated.
Assuming there are no other new spiking crashes that I've missed, then I think it's worth uplifting and trying again.
- String changes made/needed:
Comment 12•6 years ago
|
||
Comment on attachment 9071720 [details]
Bug 1348503 - Retrieve the FrameLayerBuilder pointer from the LayerManager when we need it. r?miko
approved for 68.0b14
Comment 13•6 years ago
|
||
uplift |
Updated•6 years ago
|
Updated•5 years ago
|
Updated•4 years ago
|
Description
•