Closed Bug 176915 Opened 22 years ago Closed 22 years ago

[FIX]Assertions and crash while loading [@nsIFrame::GetParent 610]

Categories

(Core :: Layout: Positioned, defect, P1)

x86
All
defect

Tracking

()

VERIFIED FIXED
mozilla1.3alpha

People

(Reporter: nallen, Assigned: bzbarsky)

References

()

Details

(Keywords: crash, testcase)

Crash Data

Attachments

(2 files, 1 obsolete file)

Win2k 1025 cvs trunk

Loading http://www.tapuz.co.il crashes approximately 1 in 5 times.  If it 
doesn't crash, Moz hangs, but the two seem unrelated.

Here are the four assertions prior to the crash:

###!!! ASSERTION: all the skipped content tokens did not get handled: 'mSkippedC
ontent.GetSize() == 0', file d:/mozilla/mozilla/htmlparser/src/CNavDTD.cpp, line
 896
###!!! ASSERTION: containing block height must be constrained: 'containingBlockH
eight != NS_AUTOHEIGHT', file d:/mozilla/mozilla/layout/html/base/src/nsHTMLRefl
owState.cpp, line 1002
###!!! ASSERTION: containing block height must be constrained: 'containingBlockH
eight != NS_AUTOHEIGHT', file d:/mozilla/mozilla/layout/html/base/src/nsHTMLRefl
owState.cpp, line 1002
###!!! ASSERTION: no placeholder frame: 'nsnull != placeholderFrame', file d:/mo
zilla/mozilla/layout/html/base/src/nsHTMLReflowState.cpp, line 1010

And the crash:

nsIFrame::GetParent(nsIFrame * * 0x0012535c) line 610 + 13 bytes
GetNearestContainingBlock(nsIFrame * 0x00000000, nsMargin & {...}) line 589
nsHTMLReflowState::InitAbsoluteConstraints(nsIPresContext * 0x0379c780, const 
nsHTMLReflowState * 0x00125680, int 0x000019c8, int 0x40000000) line 1016 + 13 
bytes
nsHTMLReflowState::InitConstraints(nsIPresContext * 0x0379c780, int 0x000019c8, 
int 0x40000000, nsMargin * 0x00000000, nsMargin * 0x00000000) line 1985
nsHTMLReflowState::Init(nsIPresContext * 0x0379c780, int 0xffffffff, int 
0xffffffff, nsMargin * 0x00000000, nsMargin * 0x00000000) line 334
nsHTMLReflowState::nsHTMLReflowState(nsIPresContext * 0x0379c780, const 
nsHTMLReflowState & {...}, nsIFrame * 0x03605410, const nsSize & {...}, int 
0xffffffff, int 0xffffffff, nsReflowReason eReflowReason_Dirty) line 306
nsAbsoluteContainingBlock::ReflowAbsoluteFrame(nsIFrame * 0x03604f88, 
nsIPresContext * 0x0379c780, const nsHTMLReflowState & {...}, int 0xffffffff, 
int 0xffffffff, nsIFrame * 0x03605410, nsReflowReason eReflowReason_Dirty, 
unsigned int & 0x039c17c0) line 419
nsAbsoluteContainingBlock::Reflow(nsIFrame * 0x03604f88, nsIPresContext * 
0x0379c780, const nsHTMLReflowState & {...}, int 0xffffffff, int 0xffffffff, 
nsRect & {...}) line 230
nsPositionedInlineFrame::Reflow(nsPositionedInlineFrame * const 0x03604f88, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1314 + 44 bytes
nsLineLayout::ReflowFrame(nsIFrame * 0x03604f88, unsigned int & 0x00000000, 
nsHTMLReflowMetrics * 0x00000000, int & 0x00000000) line 1047 + 43 bytes
nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...}, nsLineLayout & 
{...}, nsLineList_iterator {...}, nsIFrame * 0x03604f88, unsigned char * 
0x00125b4f) line 3862 + 22 bytes
nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...}, nsLineLayout & 
{...}, nsLineList_iterator {...}, int * 0x00126294, unsigned char * 0x00126057, 
int 0x00000001, int 0x00000001) line 3729 + 32 bytes
nsBlockFrame::DoReflowInlineFramesAuto(nsBlockReflowState & {...}, 
nsLineList_iterator {...}, int * 0x00126294, unsigned char * 0x00126057, int 
0x00000001, int 0x00000001) line 3633 + 46 bytes
nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...}, 
nsLineList_iterator {...}, int * 0x00126294, int 0x00000001, int 0x00000001) 
line 3577 + 36 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x00126294, int 0x00000001) line 2614
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x03707c9c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03707c9c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableCellFrame::Reflow(nsTableCellFrame * const 0x03707c3c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 951
nsContainerFrame::ReflowChild(nsIFrame * 0x03707c3c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowFrame::IR_TargetIsChild(nsTableRowFrame * const 0x03707af8, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000, 
nsIFrame * 0x03707c3c) line 1318 + 45 bytes
nsTableRowFrame::IncrementalReflow(nsTableRowFrame * const 0x03707af8, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000) 
line 1202 + 46 bytes
nsTableRowFrame::Reflow(nsTableRowFrame * const 0x03707af8, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1471 + 35 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03707af8, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowGroupFrame::IR_TargetIsChild(nsTableRowGroupFrame * const 0x03707a4c, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState 
& {...}, unsigned int & 0x00000000, nsIFrame * 0x03707af8) line 1755 + 45 bytes
nsTableRowGroupFrame::IncrementalReflow(nsTableRowGroupFrame * const 
0x03707a4c, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, 
nsRowGroupReflowState & {...}, unsigned int & 0x00000000) line 1424 + 42 bytes
nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x03707a4c, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1333 + 31 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03707a4c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableFrame::IR_TargetIsChild(nsTableFrame * const 0x0370793c, nsIPresContext 
* 0x0379c780, nsTableReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 
0x03707a4c) line 3032 + 50 bytes
nsTableFrame::IncrementalReflow(nsTableFrame * const 0x0370793c, nsIPresContext 
* 0x0379c780, const nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 
2760 + 38 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x0370793c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 2020 + 27 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x0370793c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00001d79, int 0x00000000, unsigned int 0x00000003, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x03a11ad8, 
nsIPresContext * 0x0379c780, nsIFrame * 0x0370793c, const nsHTMLReflowState & 
{...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin 
& {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason 
eReflowReason_Incremental, unsigned int & 0x00000000) line 1026 + 47 bytes
nsTableOuterFrame::IR_InnerTableReflow(nsTableOuterFrame * const 0x03a11ad8, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1340 + 69 bytes
nsTableOuterFrame::IR_TargetIsInnerTableFrame(nsTableOuterFrame * const 
0x03a11ad8, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1125 + 31 bytes
nsTableOuterFrame::IR_TargetIsChild(nsTableOuterFrame * const 0x03a11ad8, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 0x0370793c) 
line 1097 + 31 bytes
nsTableOuterFrame::IncrementalReflow(nsTableOuterFrame * const 0x03a11ad8, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1077 + 42 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x03a11ad8, nsIPresContext 
* 0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1579 + 31 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000001, 
nsCollapsingMargin & {...}, int 0x00000001, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x00127ec8) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x00127ec8, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x03a1194c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a1194c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000366, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableCellFrame::Reflow(nsTableCellFrame * const 0x03a118ec, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 951
nsContainerFrame::ReflowChild(nsIFrame * 0x03a118ec, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowFrame::IR_TargetIsChild(nsTableRowFrame * const 0x03a117d4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000, 
nsIFrame * 0x03a118ec) line 1318 + 45 bytes
nsTableRowFrame::IncrementalReflow(nsTableRowFrame * const 0x03a117d4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000) 
line 1202 + 46 bytes
nsTableRowFrame::Reflow(nsTableRowFrame * const 0x03a117d4, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1471 + 35 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a117d4, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x000001a4, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowGroupFrame::IR_TargetIsChild(nsTableRowGroupFrame * const 0x03a10d60, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState 
& {...}, unsigned int & 0x00000000, nsIFrame * 0x03a117d4) line 1755 + 45 bytes
nsTableRowGroupFrame::IncrementalReflow(nsTableRowGroupFrame * const 
0x03a10d60, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, 
nsRowGroupReflowState & {...}, unsigned int & 0x00000000) line 1424 + 42 bytes
nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x03a10d60, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1333 + 31 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a10d60, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableFrame::IR_TargetIsChild(nsTableFrame * const 0x03a10c8c, nsIPresContext 
* 0x0379c780, nsTableReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 
0x03a10d60) line 3032 + 50 bytes
nsTableFrame::IncrementalReflow(nsTableFrame * const 0x03a10c8c, nsIPresContext 
* 0x0379c780, const nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 
2760 + 38 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x03a10c8c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 2020 + 27 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a10c8c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000069, int 0x00000000, unsigned int 0x00000003, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x03a10b70, 
nsIPresContext * 0x0379c780, nsIFrame * 0x03a10c8c, const nsHTMLReflowState & 
{...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin 
& {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason 
eReflowReason_Incremental, unsigned int & 0x00000000) line 1026 + 47 bytes
nsTableOuterFrame::IR_InnerTableReflow(nsTableOuterFrame * const 0x03a10b70, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1340 + 69 bytes
nsTableOuterFrame::IR_TargetIsInnerTableFrame(nsTableOuterFrame * const 
0x03a10b70, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1125 + 31 bytes
nsTableOuterFrame::IR_TargetIsChild(nsTableOuterFrame * const 0x03a10b70, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 0x03a10c8c) 
line 1097 + 31 bytes
nsTableOuterFrame::IncrementalReflow(nsTableOuterFrame * const 0x03a10b70, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1077 + 42 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x03a10b70, nsIPresContext 
* 0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1579 + 31 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000001, 
nsCollapsingMargin & {...}, int 0x00000001, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x00129afc) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x00129afc, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x035be83c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x035be83c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableCellFrame::Reflow(nsTableCellFrame * const 0x035be7dc, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 951
nsContainerFrame::ReflowChild(nsIFrame * 0x035be7dc, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowFrame::IR_TargetIsChild(nsTableRowFrame * const 0x035be6c4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000, 
nsIFrame * 0x035be7dc) line 1318 + 45 bytes
nsTableRowFrame::IncrementalReflow(nsTableRowFrame * const 0x035be6c4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000) 
line 1202 + 46 bytes
nsTableRowFrame::Reflow(nsTableRowFrame * const 0x035be6c4, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1471 + 35 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x035be6c4, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x000007f8, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowGroupFrame::IR_TargetIsChild(nsTableRowGroupFrame * const 0x0372912c, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState 
& {...}, unsigned int & 0x00000000, nsIFrame * 0x035be6c4) line 1755 + 45 bytes
nsTableRowGroupFrame::IncrementalReflow(nsTableRowGroupFrame * const 
0x0372912c, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, 
nsRowGroupReflowState & {...}, unsigned int & 0x00000000) line 1424 + 42 bytes
nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x0372912c, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1333 + 31 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x0372912c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableFrame::IR_TargetIsChild(nsTableFrame * const 0x0372901c, nsIPresContext 
* 0x0379c780, nsTableReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 
0x0372912c) line 3032 + 50 bytes
nsTableFrame::IncrementalReflow(nsTableFrame * const 0x0372901c, nsIPresContext 
* 0x0379c780, const nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 
2760 + 38 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x0372901c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 2020 + 27 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x0372901c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000003, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x03728f00, 
nsIPresContext * 0x0379c780, nsIFrame * 0x0372901c, const nsHTMLReflowState & 
{...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin 
& {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason 
eReflowReason_Incremental, unsigned int & 0x00000000) line 1026 + 47 bytes
nsTableOuterFrame::IR_InnerTableReflow(nsTableOuterFrame * const 0x03728f00, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1340 + 69 bytes
nsTableOuterFrame::IR_TargetIsInnerTableFrame(nsTableOuterFrame * const 
0x03728f00, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1125 + 31 bytes
nsTableOuterFrame::IR_TargetIsChild(nsTableOuterFrame * const 0x03728f00, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 0x0372901c) 
line 1097 + 31 bytes
nsTableOuterFrame::IncrementalReflow(nsTableOuterFrame * const 0x03728f00, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1077 + 42 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x03728f00, nsIPresContext 
* 0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1579 + 31 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000001, 
nsCollapsingMargin & {...}, int 0x00000001, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x0012b730) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x0012b730, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x037287b0, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x037287b0, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x0000004b, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableCellFrame::Reflow(nsTableCellFrame * const 0x03a36bec, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 951
nsContainerFrame::ReflowChild(nsIFrame * 0x03a36bec, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowFrame::IR_TargetIsChild(nsTableRowFrame * const 0x03a30028, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000, 
nsIFrame * 0x03a36bec) line 1318 + 45 bytes
nsTableRowFrame::IncrementalReflow(nsTableRowFrame * const 0x03a30028, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0x00000000) 
line 1202 + 46 bytes
nsTableRowFrame::Reflow(nsTableRowFrame * const 0x03a30028, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1471 + 35 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a30028, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableRowGroupFrame::IR_TargetIsChild(nsTableRowGroupFrame * const 0x03a36fe0, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState 
& {...}, unsigned int & 0x00000000, nsIFrame * 0x03a30028) line 1755 + 45 bytes
nsTableRowGroupFrame::IncrementalReflow(nsTableRowGroupFrame * const 
0x03a36fe0, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, 
nsRowGroupReflowState & {...}, unsigned int & 0x00000000) line 1424 + 42 bytes
nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x03a36fe0, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1333 + 31 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a36fe0, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableFrame::IR_TargetIsChild(nsTableFrame * const 0x03a36ed0, nsIPresContext 
* 0x0379c780, nsTableReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 
0x03a36fe0) line 3032 + 50 bytes
nsTableFrame::IncrementalReflow(nsTableFrame * const 0x03a36ed0, nsIPresContext 
* 0x0379c780, const nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 
2760 + 38 bytes
nsTableFrame::Reflow(nsTableFrame * const 0x03a36ed0, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 2020 + 27 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x03a36ed0, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000003, unsigned int & 0x00000000) 
line 926 + 31 bytes
nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x03a36db4, 
nsIPresContext * 0x0379c780, nsIFrame * 0x03a36ed0, const nsHTMLReflowState & 
{...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin 
& {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason 
eReflowReason_Incremental, unsigned int & 0x00000000) line 1026 + 47 bytes
nsTableOuterFrame::IR_InnerTableReflow(nsTableOuterFrame * const 0x03a36db4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1340 + 69 bytes
nsTableOuterFrame::IR_TargetIsInnerTableFrame(nsTableOuterFrame * const 
0x03a36db4, nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1125 + 31 bytes
nsTableOuterFrame::IR_TargetIsChild(nsTableOuterFrame * const 0x03a36db4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000, nsIFrame * 0x03a36ed0) 
line 1097 + 31 bytes
nsTableOuterFrame::IncrementalReflow(nsTableOuterFrame * const 0x03a36db4, 
nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & {...}, const 
nsHTMLReflowState & {...}, unsigned int & 0x00000000) line 1077 + 42 bytes
nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x03a36db4, nsIPresContext 
* 0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 1579 + 31 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000001, 
nsCollapsingMargin & {...}, int 0x00000000, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x0012d364) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x0012d364, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x039b39ac, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000000, 
nsCollapsingMargin & {...}, int 0x00000001, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x0012ded8) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x0012ded8, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x039b3634, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsBlockReflowContext::ReflowBlock(const nsRect & {...}, int 0x00000001, 
nsCollapsingMargin & {...}, int 0x00000001, nsMargin & {...}, nsHTMLReflowState 
& {...}, unsigned int & 0x00000000) line 536 + 42 bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator 
{...}, int * 0x0012ea4c) line 3335 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, 
int * 0x0012ea4c, int 0x00000001) line 2514 + 27 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2296 + 31 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x039b3454, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 942 + 15 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x039b3454, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
CanvasFrame::Reflow(CanvasFrame * const 0x0399ac1c, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 567
nsBoxToBlockAdaptor::Reflow(nsBoxLayoutState & {...}, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000, int 0x00000000, int 0x00000000, int 0x00005da2, int 
0x00003e1c, int 0x00000001) line 925
nsBoxToBlockAdaptor::DoLayout(nsBoxToBlockAdaptor * const 0x039b33b8, 
nsBoxLayoutState & {...}) line 668 + 46 bytes
nsBox::Layout(nsBox * const 0x039b33b8, nsBoxLayoutState & {...}) line 1066
nsScrollBoxFrame::DoLayout(nsScrollBoxFrame * const 0x0399b014, 
nsBoxLayoutState & {...}) line 361
nsBox::Layout(nsBox * const 0x0399b014, nsBoxLayoutState & {...}) line 1066
nsContainerBox::LayoutChildAt(nsBoxLayoutState & {...}, nsIBox * 0x0399b014, 
const nsRect & {...}) line 647 + 16 bytes
nsGfxScrollFrameInner::LayoutBox(nsBoxLayoutState & {...}, nsIBox * 0x0399b014, 
const nsRect & {...}) line 1163 + 17 bytes
nsGfxScrollFrameInner::Layout(nsBoxLayoutState & {...}) line 1318
nsGfxScrollFrame::DoLayout(nsGfxScrollFrame * const 0x0399aef4, 
nsBoxLayoutState & {...}) line 1171 + 15 bytes
nsBox::Layout(nsBox * const 0x0399aef4, nsBoxLayoutState & {...}) line 1066
nsBoxFrame::Reflow(nsBoxFrame * const 0x0399aebc, nsIPresContext * 0x0379c780, 
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 
0x00000000) line 900
nsGfxScrollFrame::Reflow(nsGfxScrollFrame * const 0x0399aebc, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 847 + 25 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x0399aebc, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000) 
line 926 + 31 bytes
ViewportFrame::Reflow(ViewportFrame * const 0x0399ab14, nsIPresContext * 
0x0379c780, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, 
unsigned int & 0x00000000) line 579
IncrementalReflow::Dispatch(nsIPresContext * 0x0379c780, nsHTMLReflowMetrics & 
{...}, const nsSize & {...}, nsIRenderingContext & {...}) line 894
PresShell::ProcessReflowCommands(int 0x00000001) line 6512
ReflowEvent::HandleEvent() line 6357
HandlePLEvent(ReflowEvent * 0x036e0738) line 6371
PL_HandleEvent(PLEvent * 0x036e0738) line 644 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00f51530) line 574 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x00a10114, unsigned int 0x0000c09e, unsigned 
int 0x00000000, long 0x00f51530) line 1335 + 9 bytes
USER32! 77e3a290()
USER32! 77e145b1()
USER32! 77e15b1d()
nsAppShellService::Run(nsAppShellService * const 0x00fbc0c0) line 472
main1(int 0x00000001, char * * 0x00276d90, nsISupports * 0x00276df8) line 1522 
+ 32 bytes
main(int 0x00000001, char * * 0x00276d90) line 1883 + 37 bytes
mainCRTStartup() line 338 + 17 bytes
Keywords: crash
> ###!!! ASSERTION: no placeholder frame: 'nsnull != placeholderFrame'

Once this happens, a crash is inevitable....  the only question is why the
placeholder is not present....
Assignee: other → position
Component: Layout → Layout: R & A Pos
Keywords: crash
QA Contact: gerardok → madhur
Keywords: crash
also crashes linux trunk build 20021025
OS: Windows 2000 → All
Attached file testcase
<div style='position:relative;display:inline'>
   <object style='position:absolute;'></object>
</div>
Keywords: testcase
Attached patch patch (obsolete) — Splinter Review
The basic problem is that ReplaceFrame failed, no one checked the return value,
and the old positioned frame was still in the framelist... but now sans
placeholder.

The error checking in CantRenderReplacedElement could probably be improved
too...

I rolled in the thoughts from bug 122748 because I was touching related code
anyway.
Blocks: 122748
dbaron, would you review?

Note that the "inline positioned reflow is broken" assertions about
unconstrained height are still there, btw.

Andrew -- thanks for the excellent testcase!
Assignee: position → bzbarsky
Priority: -- → P1
Target Milestone: --- → mozilla1.3alpha
Blocks: 176877
Summary: Assertions and crash while loading [@nsIFrame::GetParent 610] → [FIX]Assertions and crash while loading [@nsIFrame::GetParent 610]
Attachment #104306 - Flags: superreview?(rbs)
Attachment #104306 - Flags: review?(dbaron)
Comment on attachment 104306 [details] [diff] [review]
patch

How about fixing the return value of nsFrameList::DoReplaceFrame in the case
where it can't find the previous sibling?

Also, does anyone pass PR_FALSE for the |aDestroy| parameter?  If not, why not
remove it, and perhaps stick with the ReplaceAndDestroy name, since it's
clearer?  (The PR_TRUE tends to hide the Destroy call.)
The underlying intention of the |aDestroy| parameter is that it forces people to
stop and think about what they really want to do with the old frame. The
compiler would catch any case where the parameter is missing, forcing people to
reflect on what they are doing. I saw some code where it appears that the
replaced frames are left leaking (bug 122748), although the arena is masking that.
> Also, does anyone pass PR_FALSE for the |aDestroy| parameter? 

Yes, in layout/mathml/base/src/nsMathMLContainerFrame.cpp

I suppose we could make the param an enum instead of a boolean with names like
eAction_Destroy and eAction_DontDestroy if we really want to...  I'm not sure
that would be worthwhile, but maybe.
Attachment #104306 - Attachment is obsolete: true
Attachment #105919 - Flags: superreview?(rbs)
Attachment #105919 - Flags: review?(dbaron)
Attachment #105919 - Flags: superreview?(rbs) → superreview+
checked in.  Thanks for the quick reviews!
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Attachment #104306 - Flags: superreview?(rbs) → superreview-
verified with testcase attachment 104297 [details].
Status: RESOLVED → VERIFIED
Crashtest added as part of http://hg.mozilla.org/mozilla-central/rev/afc662d52ab1
Flags: in-testsuite+
Crash Signature: [@nsIFrame::GetParent 610]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: