Closed Bug 368461 Opened 19 years ago Closed 19 years ago

Crash [@ nsLineBox::DisableResizeReflowOptimization] with MathML and <td>

Categories

(Core :: Layout: Block and Inline, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: jruderman, Assigned: MatsPalmgren_bugz)

References

Details

(Keywords: crash, regression, testcase)

Crash Data

Attachments

(2 files)

Attached file testcase
Loading the testcase in a debug build makes Firefox crash [@ nsLineBox::DisableResizeReflowOptimization]. Debug-only?
debug only crashes usually indicate access to memory that is either 0xdeadbeef or 0xdddddddd I don't see a crash with slightly dated (1 or 2 weeks) debug build I see however a couple of asserts: ###!!! ASSERTION: shouldn't use unconstrained widths anymore: 'availableWidth != NS_UNCONSTRAINEDSIZE', file d:/moz_src/mozilla/layout/generic/nsHTMLReflowState .cpp, line 214 WARNING: invalid markup: file d:/moz_src/mozilla/layout/mathml/base/src/nsMathML msubsupFrame.cpp, line 167 WARNING: GetBoundingMetrics failed: file d:/moz_src/mozilla/layout/mathml/base/s rc/nsMathMLContainerFrame.cpp, line 105
I think this is a recent regression, since I've seen it several times in the last few days but didn't see it before.
nsMathMLContainerFrame::ReflowForeignChild() constructs the nsLineLayout passing a null line list iterator (ok I think): http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/mathml/base/src/nsMathMLContainerFrame.cpp&rev=1.159&root=/cvsroot&mark=988-989#975 which means 'mLineBox' will not be assigned: http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/generic/nsLineLayout.cpp&rev=3.252&root=/cvsroot&mark=137-140#94 and its members contains random data. When we reflow we use it here and crash: http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/layout/generic/nsLineLayout.cpp&rev=3.252&root=/cvsroot&mark=790#762 Patch coming up...
Assignee: rbs → mats.palmgren
Blocks: 163504
Component: MathML → Layout: Block and Inline
Keywords: regression
OS: Mac OS X → All
Hardware: Macintosh → All
Attached patch Patch rev. 1Splinter Review
Attachment #253100 - Flags: superreview?(dbaron)
Attachment #253100 - Flags: review?(dbaron)
Comment on attachment 253100 [details] [diff] [review] Patch rev. 1 >+#ifdef NS_DEBUG >+ nsLineList_iterator() { memset(&mCurrent, 0xdd, sizeof(mCurrent)); } >+#else > // Auto generated default constructor OK. > // Auto generated copy-constructor OK. >+#endif r+sr=dbaron, except every time you did the above pattern, the #endif should be one line earlier, since the auto-generated copy constructor is still fine and still used.
Attachment #253100 - Flags: superreview?(dbaron)
Attachment #253100 - Flags: superreview+
Attachment #253100 - Flags: review?(dbaron)
Attachment #253100 - Flags: review+
Though, actually, 0xdd is usually used to mean deleted memory. I'm not sure what a normal marker for uninitialized memory is, but maybe use 0xda if nobody comes up with something better? timeless?
0xcd is apparently used by something (debug crt on windows?), so how about using that?
Mats, can you check this in (with dbaron's changes)?
Moved the #endif and changed the value to 0xcd. Checked in to trunk at 2007-02-08 05:53 PST
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Flags: in-testsuite?
Crashtest checked in.
Flags: in-testsuite? → in-testsuite+
Crash Signature: [@ nsLineBox::DisableResizeReflowOptimization]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: