Closed Bug 3037 Opened 26 years ago Closed 26 years ago

Setting a "display: table-cell" style rule on a SPAN crashes viewer

Categories

(Core :: Layout: Tables, defect, P2)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: nisheeth_mozilla, Assigned: karnaze)

Details

The following XML snippet crashes the viewer:

<?xml version="1.0"?>
<window xmlns:html="http://www.w3.org/TR/REC-html40">
<window xmlns:xul
="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<!DOCTYPE window>

<window>
  <xul:toolbox>
    <xul:toolbar>
	  <html:span style="display: table-cell">
          <html:button cmd="nsCmd:BrowserBack"
style="background-color:rgb(192,192,192);">
                          <html:img
src="resource:/res/toolbar/TB_Back.gif"/><html:BR/>Back
          </html:button>
          </html:span>
          <html:span style="display: table-cell">
		  <html:input style="width:325px;"></html:input>
          </html:span>
    </xul:toolbar>
  </xul:toolbox>
</window>

The stack trace is:

nsDebug::PreCondition(char * 0x006aac78, char * 0x006aac50, char * 0x006aac1c,
int 574) line 112 + 13 bytes
nsTableFrame::GetEffectiveRowSpan(int 0, nsTableCellFrame * 0x012c2120) line 574
+ 51 bytes
nsTableRowFrame::PlaceChild(nsIPresContext & {...}, RowReflowState & {...},
nsIFrame * 0x012c2120, const nsRect & {...}, nsSize * 0x0012c69c, nsSize *
0x0012c484) line 437 + 31 bytes
nsTableRowFrame::InitialReflow(nsTableRowFrame * const 0x012c1f20,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, RowReflowState & {...},
unsigned int & 0, nsTableCellFrame * 0x00000000, int 1) line 820
nsTableRowFrame::Reflow(nsTableRowFrame * const 0x012c1f24, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 1393 + 39 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x012c1f20, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
nsTableRowGroupFrame::ReflowMappedChildren(nsTableRowGroupFrame * const
0x012c1470, nsIPresContext & {...}, nsHTMLReflowMetrics & {...},
RowGroupReflowState & {...}, unsigned int & 0, nsTableRowFrame * 0x00000000,
nsReflowReason eReflowReason_Initial, int 1) line 371 + 34 bytes
nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x012c1474,
nsIPresContext & {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState &
{...}, unsigned int & 0) line 978 + 39 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x012c1470, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
nsTableFrame::ResizeReflowPass1(nsTableFrame * const 0x012c1b70, nsIPresContext
& {...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0, nsTableRowGroupFrame * 0x00000000, nsReflowReason
eReflowReason_Initial, int 1) line 2527
nsTableFrame::Reflow(nsTableFrame * const 0x012c1b74, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 2381 + 43 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x012c1b70, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x012c1984, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 943 + 37 bytes
nsBlockReflowContext::ReflowBlock(nsIFrame * 0x012c1980, const nsRect & {...},
int 1, nsMargin & {...}, unsigned int & 0) line 155 + 39 bytes
nsBaseIBFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineBox *
0x012c4390, int & 1) line 2098 + 45 bytes
nsBaseIBFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x012c4390,
int & 1) line 1564 + 20 bytes
nsBaseIBFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 1300 + 26 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 4938
nsBaseIBFrame::Reflow(nsBaseIBFrame * const 0x012c13e4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 804 + 25 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x012c13e4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 4571 + 25 bytes
nsToolbarFrame::Reflow(nsToolbarFrame * const 0x012c13e4, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 128
nsToolboxFrame::Reflow(nsToolboxFrame * const 0x012c1124, nsIPresContext &
{...}, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned
int & 0) line 299 + 31 bytes
nsInlineReflow::ReflowFrame(int 0, nsHTMLReflowMetrics & {...}, unsigned int &
0) line 447
nsInlineReflow::ReflowFrame(nsIFrame * 0x012c1120, int 0, unsigned int & 0) line
269 + 20 bytes
nsInlineFrame::ReflowInlineFrame(nsInlineFrame::ReflowState & {...}, nsIFrame *
0x012c1120, unsigned int & 0) line 1409 + 18 bytes
nsInlineFrame::ReflowInlineFrames(nsInlineFrame::ReflowState & {...},
nsHTMLReflowMetrics & {...}, unsigned int & 0) line 1335 + 23 bytes
nsInlineFrame::Reflow(nsInlineFrame * const 0x012c0704, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 1246 + 26 bytes
nsInlineReflow::ReflowFrame(int 0, nsHTMLReflowMetrics & {...}, unsigned int &
0) line 447
nsInlineReflow::ReflowFrame(nsIFrame * 0x012c0700, int 0, unsigned int & 0) line
269 + 20 bytes
nsInlineFrame::ReflowInlineFrame(nsInlineFrame::ReflowState & {...}, nsIFrame *
0x012c0700, unsigned int & 0) line 1409 + 18 bytes
nsInlineFrame::ReflowInlineFrames(nsInlineFrame::ReflowState & {...},
nsHTMLReflowMetrics & {...}, unsigned int & 0) line 1335 + 23 bytes
nsInlineFrame::Reflow(nsInlineFrame * const 0x012c0bd4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 1246 + 26 bytes
nsInlineReflow::ReflowFrame(int 1, nsHTMLReflowMetrics & {...}, unsigned int &
0) line 447
nsInlineReflow::ReflowFrame(nsIFrame * 0x012c0bd0, int 1, unsigned int & 0) line
269 + 20 bytes
nsBaseIBFrame::ReflowInlineFrame(nsBlockReflowState & {...}, nsLineBox *
0x012c4890, nsIFrame * 0x012c0bd0, int & 1, int & 1) line 2248 + 31 bytes
nsBaseIBFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x012c4890,
int & 1) line 1606 + 28 bytes
nsBaseIBFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 1300 + 26 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 4938
nsBaseIBFrame::Reflow(nsBaseIBFrame * const 0x012c08f4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 804 + 25 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x012c08f4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 4571 + 25 bytes
nsAreaFrame::Reflow(nsAreaFrame * const 0x012c08f4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 508 + 25 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x012c08f0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
RootFrame::Reflow(RootFrame * const 0x012c0584, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 248
nsContainerFrame::ReflowChild(nsIFrame * 0x012c0580, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
nsScrollFrame::Reflow(nsScrollFrame * const 0x01298fb4, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 340
nsContainerFrame::ReflowChild(nsIFrame * 0x01298fb0, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 363 + 28 bytes
ViewportFrame::Reflow(ViewportFrame * const 0x0123e904, nsIPresContext & {...},
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0)
line 427
PresShell::InitialReflow(PresShell * const 0x012bdd00, int 7344, int 3576) line
726
nsXMLContentSink::StartLayout() line 1330
nsXMLContentSink::DidBuildModel(nsXMLContentSink * const 0x01275bf0, int 1) line
261
CWellFormedDTD::DidBuildModel(CWellFormedDTD * const 0x0124adb0, unsigned int 0,
int 1, nsIParser * 0x01275af0, nsIContentSink * 0x01275bf0) line 300 + 20 bytes
nsParser::DidBuildModel(unsigned int 0) line 482 + 55 bytes
nsParser::ResumeParse(nsIDTD * 0x00000000) line 714
nsParser::OnStopBinding(nsParser * const 0x01275af4, nsIURL * 0x012488c0,
unsigned int 0, unsigned short * 0x012473b0) line 934 + 17 bytes
nsDocumentBindInfo::OnStopBinding(nsDocumentBindInfo * const 0x01248870, nsIURL
* 0x012488c0, unsigned int 0, unsigned short * 0x012473b0) line 1734 + 30 bytes
OnStopBindingProxyEvent::HandleEvent(OnStopBindingProxyEvent * const 0x01247360)
line 594 + 45 bytes
StreamListenerProxyEvent::HandlePLEvent(PLEvent * 0x01247364) line 474 + 12
bytes
PL_HandleEvent(PLEvent * 0x01247364) line 472 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x011f1520) line 433 + 9 bytes
_md_EventReceiverProc(void * 0x0022052e, unsigned int 49340, unsigned int 0,
long 18814240) line 784 + 9 bytes
USER32! 77e713ed()

The pre condition that calls the user breakpoint and crashes the app is in
nsTableFrame::GetEffectiveRowSpan():

NS_PRECONDITION (0<=aRowIndex && aRowIndex<GetRowCount(), "bad row index arg");
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
It no longer crashes. I don't know enough about xul to know if the test case is
right. The following simple html example illustrates that <span>s can have a
display of table-cell. If the xul is correct, please reopen this bug (or make
another) and assign it to rickg, because the content model of the original test
case does not look right.

<html>
<body>
<span style="display: table-cell">foo</span>
<span style="display: table-cell">bar</span>
</body>
</html>
QA Contact: 4110
Status: RESOLVED → VERIFIED
I will verify this as fixed in regards to crashing. No guarantees as to the
validity of the test case for other purposes.
You need to log in before you can comment on or make changes to this bug.