Closed Bug 3161 Opened 26 years ago Closed 26 years ago

nsBlockFrame::RemoveChild() throws assertion

Categories

(Core :: Layout, defect, P1)

All
Linux
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: kinmoz, Assigned: buster)

References

()

Details

Using a 02/16/99 SeaMonkey build, nsBlockFrame::RemoveChild() throws an assertion when the editor deletes a selected line via the DOM. This is a cross platform bug. Here's how to reproduce the assertion: - Start the Linux viewer with Example 0 - Select Tools->Editor Mode from the menus. - Select the entire first line of the document. - Hit any key. You should now crash with an assertion in nsBlockFrame::RemoveChild(): Program received signal SIGABRT, Aborted. 0x40cc56a1 in __kill () (gdb) where #0 0x40cc56a1 in __kill () #1 0x40cc54cf in raise (sig=6) at ../sysdeps/posix/raise.c:27 #2 0x40cc66df in abort () at ../sysdeps/generic/abort.c:83 #3 0x409bdb86 in nsDebug::Abort ( aFile=0x4048d48d "/usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp", aLine=3751) at /usr/people/kin/builds/raptor.02_16_99/mozilla/xpcom/src/nsDebug.cpp:85 #4 0x409bdbee in nsDebug::Break ( aFile=0x4048d48d "/usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp", aLine=3751) at /usr/people/kin/builds/raptor.02_16_99/mozilla/xpcom/src/nsDebug.cpp:100 #5 0x409bdd31 in nsDebug::Assertion (aStr=0x4048dda4 "bad continuation", aExpr=0x4048dd89 "child == line->mFirstChild", aFile=0x4048d48d "/usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp", aLine=3751) at /usr/people/kin/builds/raptor.02_16_99/mozilla/xpcom/src/nsDebug.cpp:132 #6 0x402d5773 in nsBlockFrame::RemoveChild (this=0x82008d8, aLines=0x8200c00, aChild=0x821fd70) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:3751 #7 0x402d5577 in nsBlockFrame::DeleteChildsNextInFlow (this=0x82008d8, aPresContext=@0x81979f0, aChild=0x8200ba0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:3701 #8 0x402f4f0c in nsInlineReflow::ReflowFrame (this=0xbfffc16c, aIsAdjacentWithTop=1, aMetrics=@0xbfffc040, aStatus=@0xbfffc0ac) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsInlineReflow.cpp:485 #9 0x402f48ea in nsInlineReflow::ReflowFrame (this=0xbfffc16c, aFrame=0x8200ba0, aIsAdjacentWithTop=1, aReflowStatus=@0xbfffc0ac) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsInlineReflow.cpp:270 #10 0x402d2af0 in nsBlockFrame::ReflowInlineFrame (this=0x82008d8, aState=@0xbfffc784, aLine=0x8200c00, aFrame=0x8200ba0, aKeepLineGoing=0xbfffc0ec) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:2408 #11 0x402d15c6 in nsBlockFrame::ReflowLine (this=0x82008d8, aState=@0xbfffc784, aLine=0x8200c00, aKeepReflowGoing=0xbfffc138) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1711 #12 0x402d0e25 in nsBlockFrame::ReflowDirtyLines (this=0x82008d8, aState=@0xbfffc784) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1466 #13 0x402cfdd1 in nsBlockFrame::Reflow (this=0x82008d8, aPresContext=@0x81979f0, aMetrics=@0xbfffcc88, aReflowState=@0xbfffcb1c, aStatus=@0xbfffcc38) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:915 #14 0x402d8022 in nsBlockReflowContext::ReflowBlock (this=0xbfffcc44, aFrame=0x82008d8, aSpace=@0xbfffccd0, aIsAdjacentWithTop=1, aComputedOffsets=@0xbfffcc28, aFrameReflowStatus=@0xbfffcc38) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockReflowContext.cpp:192 #15 0x402d2548 in nsBlockFrame::ReflowBlockFrame (this=0x81f1fe8, aState=@0xbfffd3c8, aLine=0x821e1e8, aKeepReflowGoing=0xbfffcd7c) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:2259 #16 0x402d14cb in nsBlockFrame::ReflowLine (this=0x81f1fe8, aState=@0xbfffd3c8, aLine=0x821e1e8, aKeepReflowGoing=0xbfffcd7c) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1677 #17 0x402d0e25 in nsBlockFrame::ReflowDirtyLines (this=0x81f1fe8, aState=@0xbfffd3c8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1466 #18 0x402cfdd1 in nsBlockFrame::Reflow (this=0x81f1fe8, aPresContext=@0x81979f0, aMetrics=@0xbfffd8cc, aReflowState=@0xbfffd760, aStatus=@0xbfffd87c) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:915 #19 0x402d8022 in nsBlockReflowContext::ReflowBlock (this=0xbfffd888, aFrame=0x81f1fe8, aSpace=@0xbfffd914, aIsAdjacentWithTop=1, aComputedOffsets=@0xbfffd86c, aFrameReflowStatus=@0xbfffd87c) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockReflowContext.cpp:192 #20 0x402d2548 in nsBlockFrame::ReflowBlockFrame (this=0x81f1ca0, aState=@0xbfffe00c, aLine=0x81f22b0, aKeepReflowGoing=0xbfffd9c0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:2259 #21 0x402d14cb in nsBlockFrame::ReflowLine (this=0x81f1ca0, aState=@0xbfffe00c, aLine=0x81f22b0, aKeepReflowGoing=0xbfffd9c0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1677 #22 0x402d0e25 in nsBlockFrame::ReflowDirtyLines (this=0x81f1ca0, aState=@0xbfffe00c) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:1466 #23 0x402cfdd1 in nsBlockFrame::Reflow (this=0x81f1ca0, aPresContext=@0x81979f0, aMetrics=@0xbfffe4f8, aReflowState=@0xbfffe3a0, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsBlockFrame.cpp:915 #24 0x402cd317 in nsAreaFrame::Reflow (this=0x81f1ca0, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe4f8, aReflowState=@0xbfffe490, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsAreaFrame.cpp:502 #25 0x402daf67 in nsContainerFrame::ReflowChild (this=0x81f1768, aKidFrame=0x81f1ca0, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe4f8, aReflowState=@0xbfffe490, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsContainerFrame.cpp:364 #26 0x402e7dbc in RootFrame::Reflow (this=0x81f1768, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe6e8, aReflowState=@0xbfffe62c, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsHTMLFrame.cpp:250 #27 0x402daf67 in nsContainerFrame::ReflowChild (this=0x81efe30, aKidFrame=0x81f1768, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe6e8, aReflowState=@0xbfffe62c, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsContainerFrame.cpp:364 #28 0x40302873 in nsScrollFrame::Reflow (this=0x81efe30, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe80c, aReflowState=@0xbfffe79c, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsScrollFrame.cpp:349 #29 0x402daf67 in nsContainerFrame::ReflowChild (this=0x81cbe90, aKidFrame=0x81efe30, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe80c, aReflowState=@0xbfffe79c, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsContainerFrame.cpp:364 #30 0x4030bc02 in ViewportFrame::Reflow (this=0x81cbe90, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe948, aReflowState=@0xbfffe894, aStatus=@0xbfffe890) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsViewportFrame.cpp:436 #31 0x402e8b0f in nsHTMLReflowCommand::Dispatch (this=0x81c8f38, aPresContext=@0x81979f0, aDesiredSize=@0xbfffe948, aMaxSize=@0xbfffe938, aRendContext=@0x81c8f68) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsHTMLReflowCommand.cpp:164 #32 0x402fe474 in PresShell::ProcessReflowCommands (this=0x81d9828) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsPresShell.cpp:1116 #33 0x402fcc47 in PresShell::ExitReflowLock (this=0x81d9828) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsPresShell.cpp:595 #34 0x402feee7 in PresShell::ContentChanged (this=0x81d9828, aDocument=0x81a9698, aContent=0x81de5cc, aSubContent=0x0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsPresShell.cpp:1369 #35 0x4029c9e0 in nsDocument::ContentChanged (this=0x81a9698, aContent=0x81de5cc, aSubContent=0x0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/base/src/nsDocument.cpp:1150 #36 0x4029769b in nsGenericDOMDataNode::ReplaceData (this=0x81de5d8, aOffset=0, aCount=33, aData=@0xbfffea54) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/base/src/nsGenericDOMDataNode.cpp:344 #37 0x40297456 in nsGenericDOMDataNode::DeleteData (this=0x81de5d8, aOffset=0, aCount=34) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/base/src/nsGenericDOMDataNode.cpp:297 #38 0x402c7c52 in nsTextNode::DeleteData (this=0x81de5c0, aOffset=0, aCount=34) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/base/src/nsTextNode.cpp:52 #39 0x40ded5c6 in ?? () #40 0x40dec31b in ?? () #41 0x40def5d3 in ?? () #42 0x40dec31b in ?? () #43 0x40dec31b in ?? () #44 0x413b0598 in ?? () #45 0x413b1927 in ?? () #46 0x413b0fa6 in ?? () #47 0x40de5c61 in ?? () #48 0x40de6490 in ?? () #49 0x40de9685 in ?? () #50 0x40dea477 in ?? () #51 0x402c90c6 in nsEventListenerManager::HandleEvent (this=0x81f60a0, aPresContext=@0x81979f0, aEvent=0xbffff118, aDOMEvent=0xbfffede0, aEventStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/events/src/nsEventListenerManager.cpp:379 #52 0x4029d944 in nsDocument::HandleDOMEvent (this=0x81a9698, aPresContext=@0x81979f0, aEvent=0xbffff118, aDOMEvent=0xbfffede0, aFlags=1, aEventStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/base/src/nsDocument.cpp:1668 #53 0x4033f5fd in nsHTMLHtmlElement::HandleDOMEvent (this=0x8197428, aPresContext=@0x81979f0, aEvent=0xbffff118, aDOMEvent=0x0, aFlags=1, aEventStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/content/src/nsHTMLHtmlElement.cpp:173 #54 0x402ffca2 in PresShell::HandleEvent (this=0x81d9828, aView=0x81f17b8, aEvent=0xbffff118, aEventStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/layout/html/base/src/nsPresShell.cpp:1728 #55 0x4064bcf8 in nsView::HandleEvent (this=0x81f17b8, event=0xbffff118, aEventFlags=8, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsView.cpp:824 #56 0x4064bc71 in nsView::HandleEvent (this=0x81f0610, event=0xbffff118, aEventFlags=8, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsView.cpp:806 #57 0x4064bc71 in nsView::HandleEvent (this=0x81fbbb8, event=0xbffff118, aEventFlags=8, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsView.cpp:806 #58 0x4064e56e in nsScrollingView::HandleEvent (this=0x81fbbb8, aEvent=0xbffff118, aEventFlags=8, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsScrollingView.cpp:812 #59 0x4064bc71 in nsView::HandleEvent (this=0x81d9d38, event=0xbffff118, aEventFlags=28, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsView.cpp:806 #60 0x4065216c in nsViewManager::DispatchEvent (this=0x81d9778, aEvent=0xbffff118, aStatus=@0xbffff0a8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsViewManager.cpp:1230 #61 0x40649a0c in HandleEvent (aEvent=0xbffff118) at /usr/people/kin/builds/raptor.02_16_99/mozilla/view/src/nsView.cpp:63 #62 0x4005f3fa in nsWidget::DispatchEvent (this=0x81f0690, event=0xbffff118, aStatus=@0xbffff0e4) at /usr/people/kin/builds/raptor.02_16_99/mozilla/widget/src/gtk/nsWidget.cpp:775 #63 0x4005f2d8 in nsWidget::DispatchWindowEvent (this=0x81f0690, event=0xbffff118) at /usr/people/kin/builds/raptor.02_16_99/mozilla/widget/src/gtk/nsWidget.cpp:735 #64 0x40060350 in nsWindow::OnKey (this=0x81f0690, aEvent=@0xbffff118) at /usr/people/kin/builds/raptor.02_16_99/mozilla/widget/src/gtk/nsWindow.cpp:417 #65 0x4005d193 in handle_key_press_event (w=0x81f0868, event=0x8189248, p=0x81f0690) at /usr/people/kin/builds/raptor.02_16_99/mozilla/widget/src/gtk/nsGtkEventHandler.cpp:742 #66 0x40b1669d in gtk_marshal_BOOL__POINTER (object=0x81f0868, func=0x4005d148 <handle_key_press_event(_GtkWidget *, _GdkEventKey *, void *)>, func_data=0x81f0690, args=0xbffff204) at gtkmarshal.c:32 #67 0x40adbf8a in gtk_handlers_run (handlers=0x8178230, signal=0xbffff1c0, object=0x81f0868, params=0xbffff204, after=0) at gtksignal.c:1877 #68 0x40adb573 in gtk_signal_real_emit (object=0x81f0868, signal_id=26, params=0xbffff204) at gtksignal.c:1445 #69 0x40ad989c in gtk_signal_emit (object=0x81f0868, signal_id=26) at gtksignal.c:528 #70 0x40b0de38 in gtk_widget_event (widget=0x81f0868, event=0x8189248) at gtkwidget.c:2745 #71 0x40b15092 in gtk_window_key_press_event (widget=0x80ede98, event=0x8189248) at gtkwindow.c:1017 #72 0x40b1669d in gtk_marshal_BOOL__POINTER (object=0x80ede98, func=0x40b14f8c <gtk_window_key_press_event>, func_data=0x0, args=0xbffff560) at gtkmarshal.c:32 #73 0x40adb5aa in gtk_signal_real_emit (object=0x80ede98, signal_id=26, params=0xbffff560) at gtksignal.c:1460 #74 0x40ad989c in gtk_signal_emit (object=0x80ede98, signal_id=26) at gtksignal.c:528 #75 0x40b0de38 in gtk_widget_event (widget=0x80ede98, event=0x8189248) at gtkwidget.c:2745 #76 0x40aaf089 in gtk_propagate_event (widget=0x81f0868, event=0x8189248) at gtkmain.c:1262 #77 0x40aae436 in gtk_main_do_event (event=0x8189248) at gtkmain.c:734 #78 0x40b52b6e in gdk_event_dispatch (source_data=0x0, current_time=0xbffff8e0, user_data=0x0) at gdkevents.c:2073 #79 0x40b7ec77 in g_main_dispatch (current_time=0xbffff8e0) at gmain.c:640 #80 0x40b7f203 in g_main_iterate (block=1, dispatch=1) at gmain.c:847 #81 0x40b7f385 in g_main_run (loop=0x8188e98) at gmain.c:905 #82 0x40aadeb3 in gtk_main () at gtkmain.c:457 #83 0x40054cb4 in nsAppShell::Run (this=0x809c4f0) at /usr/people/kin/builds/raptor.02_16_99/mozilla/widget/src/gtk/nsAppShell.cpp:145 #84 0x80537d2 in nsNativeViewerApp::Run (this=0x8098ef8) at /usr/people/kin/builds/raptor.02_16_99/mozilla/webshell/tests/viewer/nsGTKMain.cpp:42 #85 0x8053a36 in main (argc=1, argv=0xbffff9a4) at /usr/people/kin/builds/raptor.02_16_99/mozilla/webshell/tests/viewer/nsGTKMain.cpp:97 (gdb)
As of this afternoon's build, you don't have to select a line or delete it, just click somewhere to set the collapsed selection and hit return. I filed bug 3169 on it, will mark that bug as a dup of this one.
*** Bug 3169 has been marked as a duplicate of this bug. ***
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
The assertion turns out to be bogus; I removed it and fixed this special case of removal (the :first-letter style is what triggered the assertion).
Status: RESOLVED → VERIFIED
Using 3/26 build on Win 95, Win NT, Win 98, Mac8.5 and Linux, followed procedure and there were no crashes. Verifying bug fixed.
You need to log in before you can comment on or make changes to this bug.