Closed Bug 387544 Opened 19 years ago Closed 19 years ago

[FIXr]Crash [@ nsFrameManager::ReResolveStyleContext] with position: absolute, display: table-caption and setting display: none

Categories

(Core :: Layout, defect, P1)

defect

Tracking

()

VERIFIED FIXED
mozilla1.9beta1

People

(Reporter: martijn.martijn, Assigned: bzbarsky)

Details

(Keywords: crash, helpwanted, testcase, Whiteboard: [sg:critical?][needs branch patch])

Crash Data

Attachments

(2 files, 1 obsolete file)

Attached file testcase —
See testcase, which crashes current trunk and branch builds within 300ms, normally. Because it also crashes branch builds, I'm marking it security sensitive for now. The data url consists of this: <html><head></head> <body style="display: table;"> <div></div> <div id="a" style="display: table-caption;"> <div id="b" style="position: absolute;"></div> </div> </body> </html> http://crash-stats.mozilla.com/report/index/397dd1b3-2ee5-11dc-bc9f-001a4bd43ed6 0 nsFrameManager::ReResolveStyleContext(nsPresContext *,nsIFrame *,nsIContent *,nsStyleChangeList *,nsChangeHint) 1 nsFrameManager::ComputeStyleChangeFor(nsIFrame *,nsStyleChangeList *,nsChangeHint) 2 nsCSSFrameConstructor::RestyleElement(nsIContent *,nsIFrame *,nsChangeHint) 3 nsCSSFrameConstructor::ProcessOneRestyle(nsIContent *,nsReStyleHint,nsChangeHint) 4 nsCSSFrameConstructor::ProcessPendingRestyles() 5 nsCSSFrameConstructor::RestyleEvent::Run() 6 nsThread::ProcessNextEvent(int,int *) 7 NS_ProcessNextEvent_P(nsIThread *,int) 8 nsBaseAppShell::Run() 9 nsAppStartup::Run() Talkback ID: TB33900982G
Flags: blocking1.9?
Attached patch Trunk fix (obsolete) — — Splinter Review
The patch is pretty self-explanatory: processing pseudoframes when constructing the caption means that tempItems ends up with both the pseudo rowgroup and the caption. So we were failing to parent the caption correctly, and things broke. I'm not sure how to fix this on branch, offhand, without porting the fix for bug 243159 first. Unfortunately, we really do need to detect the caption post-facto, and with the branch setup that's too late.... I suppose we could pass around a caption frame pointer all over (as TableProcessChild does), but that would really suck...
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Attachment #274425 - Flags: superreview?(roc)
Attachment #274425 - Flags: review?(bernd_mozilla)
OS: Windows XP → All
Priority: -- → P1
Hardware: PC → All
Summary: Crash [@ nsFrameManager::ReResolveStyleContext] with position: absolute, display: table-caption and setting display: none → [FIX]Crash [@ nsFrameManager::ReResolveStyleContext] with position: absolute, display: table-caption and setting display: none
Target Milestone: --- → mozilla1.9beta2
Comment on attachment 274425 [details] [diff] [review] Trunk fix We should use nsFrameList:: GetPrevSiblingFor here, for the !aPrevSibling case, but I'll let it slide since that's just existing code. I assume the caption frames can't be wrapped in anything that would hide them from this search?
Attachment #274425 - Flags: superreview?(roc) → superreview+
> I assume the caption frames can't be wrapped in anything that would hide them > from this search? Right. Not if the parent is a table, as here.
Attached patch Merged to tip — — Splinter Review
Attachment #274425 - Attachment is obsolete: true
Attachment #275027 - Flags: review?(bernd_mozilla)
Attachment #274425 - Flags: review?(bernd_mozilla)
Attachment #275027 - Flags: review?(bernd_mozilla) → review+
Comment on attachment 275027 [details] [diff] [review] Merged to tip This fixes a crash by making sure we don't make assumptions that just aren't true about how many frames will get added to a framelist when constructing frames for a single content node. The risk is moderate shading into low; about as good as this code ever gets.
Attachment #275027 - Flags: approval1.9?
Summary: [FIX]Crash [@ nsFrameManager::ReResolveStyleContext] with position: absolute, display: table-caption and setting display: none → [FIXr]Crash [@ nsFrameManager::ReResolveStyleContext] with position: absolute, display: table-caption and setting display: none
Comment on attachment 275027 [details] [diff] [review] Merged to tip a1.9=dbaron
Attachment #275027 - Flags: approval1.9? → approval1.9+
Checked in.
Status: ASSIGNED → RESOLVED
Closed: 19 years ago
Flags: blocking1.9?
Resolution: --- → FIXED
Verified fixed, using: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a8pre) Gecko/2007080805 Minefield/3.0a8pre
Status: RESOLVED → VERIFIED
Flags: wanted1.8.1.x+
Flags: wanted1.8.0.x+
Flags: blocking1.8.1.7?
Whiteboard: [sg:critical?]
Flags: blocking1.8.1.7? → blocking1.8.1.7+
From bug 398404 comment 2: [bug 387544] is a _lot_ more work and needs pretty extensive testing for any patch we come up with. See bug 387544 comment 1. It shouldn't be going in this close to the end of a branch cycle. :( Unfortunately people tend not to pay attention to their branch bugs until the end of the cycle (the trunk fix here was done at the beginning of this cycle) :-( Moved blocking flag to 1.8.1.9. Tomorrow starts the 1.8.1.9 dev cycle while QA/Build finishes up the 1.8.1.8 release
Flags: blocking1.8.1.8+ → blocking1.8.1.9?
I'm going to need some help here, I suspect, if we're to get this fixed on branch.
Keywords: helpwanted
Flags: blocking1.8.1.12? → blocking1.8.1.12+
In email Boris says for the branch we have a choice between risky (port biggish frame construction changes to the branch) or tricky (some custom hack), and it's really too late in 1.8.1.12 for either.
Flags: blocking1.8.1.12+ → blocking1.8.1.13+
Boris, who would be able to help you on getting this ported to branch? (i.e., who can we ask?)
Whiteboard: [sg:critical?] → [sg:critical?][needs branch patch]
I think the only people who can even claim to know this code are bernd, roc, mats, and dbaron (probably in that order)...
Just to make it clear, I don't think there's going to be a small safe patch here. Either you'll have a big risky backport or a big, tedious, less tested, so possibly just as risky different patch altogether...
(In reply to comment #14) > Just to make it clear, I don't think there's going to be a small safe patch > here. Either you'll have a big risky backport or a big, tedious, less tested, > so possibly just as risky different patch altogether... Sadly, that's very clear, but we still want to push for getting this fixed. If not this cycle, then the next. Bernd, do you have time to look at porting this to the 1.8 branch (or creating a new patch entirely)?
See bug 415447, comment 12. Let's just stop wasting time trying to fix weird crashes on branch and just focus on branch on top-crashes or public security issues.
>Bernd, do you have time to look at porting this to the 1.8 branch (or creating >a new patch entirely)? No, comment 14 says it very clearly, the required changes exceed my capabilities and I still have 1.9 wanteds on my list.
We don't have anyone that can own this right now. Minusing for 1.8.1.13.
Flags: blocking1.8.1.13+ → blocking1.8.1.13-
Crash Signature: [@ nsFrameManager::ReResolveStyleContext]
Group: core-security → core-security-release
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: