Closed Bug 119351 Opened 24 years ago Closed 23 years ago

Get assert in layout when loading this url ("no body node")

Categories

(Core :: Layout, defect, P1)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED
mozilla1.1alpha

People

(Reporter: depman1, Assigned: dbaron)

References

()

Details

Attachments

(1 file)

tested in mozilla debug 0.9.7+ 20020109 and mfcEmbed. 1. Launch mfcEmbed or mozilla 2. Enter above url. Result: Get assert: "no body node:, file /mozilla/layout/html/style/src/nsCSSrendering.cpp, line 2441. pressing ignore will allow url to load. stack trace for the assert: nsDebug::Assertion(const char * 0x02e1df44 ??_C@_0N@KADF@no?5body?5node?$AA@, const char * 0x02e1df54 ??_C@_0M@IAAH@bodyContent?$AA@, const char * 0x02e1df60 ??_C@_0EA@IGDH@d?3?2mozilla_src?2mozilla?2layout?2ht@, int 2441) line 290 + 13 bytes FindCanvasBackground(nsIPresContext * 0x0354fc90, nsIFrame * 0x03237b08, const nsStyleBackground * * 0x0012f434) line 2441 + 38 bytes nsCSSRendering::FindBackground(nsIPresContext * 0x0354fc90, nsIFrame * 0x03237b08, const nsStyleBackground * * 0x0012f434, int * 0x0012f40c) line 2503 + 23 bytes nsCSSRendering::PaintBackground(nsIPresContext * 0x0354fc90, nsIRenderingContext & {...}, nsIFrame * 0x03237b08, const nsRect & {...}, const nsRect & {...}, const nsStyleBorder & {...}, int 0, int 0) line 2521 + 21 bytes nsHTMLContainerFrame::Paint(nsHTMLContainerFrame * const 0x03237b08, nsIPresContext * 0x0354fc90, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, unsigned int 0) line 96 + 33 bytes CanvasFrame::Paint(CanvasFrame * const 0x03237b08, nsIPresContext * 0x0354fc90, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, unsigned int 0) line 388 + 27 bytes PresShell::Paint(PresShell * const 0x03563194, nsIView * 0x035b44e0, nsIRenderingContext & {...}, const nsRect & {...}) line 5769 + 36 bytes nsView::Paint(nsView * const 0x035b44e0, nsIRenderingContext & {...}, const nsRect & {...}, unsigned int 0, int & 268486020) line 272 nsViewManager::RenderDisplayListElement(DisplayListElement2 * 0x03580040, nsIRenderingContext & {...}) line 1240 nsViewManager::RenderViews(nsView * 0x035b49a0, nsIRenderingContext & {...}, const nsRect & {...}, int & 0) line 1164 nsViewManager::Refresh(nsView * 0x035b49a0, nsIRenderingContext * 0x03587910, nsIRegion * 0x035878c0, unsigned int 1) line 703 nsViewManager::DispatchEvent(nsViewManager * const 0x03562ac0, nsGUIEvent * 0x0012f9dc, nsEventStatus * 0x0012f8e8) line 1783 HandleEvent(nsGUIEvent * 0x0012f9dc) line 83 nsWindow::DispatchEvent(nsWindow * const 0x035b4864, nsGUIEvent * 0x0012f9dc, nsEventStatus & nsEventStatus_eIgnore) line 850 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f9dc, nsEventStatus & nsEventStatus_eIgnore) line 876 nsWindow::OnPaint() line 4324 + 28 bytes nsWindow::ProcessMessage(unsigned int 15, unsigned int 0, long 0, long * 0x0012fdfc) line 3246 + 17 bytes nsWindow::WindowProc(HWND__ * 0x0061031a, unsigned int 15, unsigned int 0, long 0) line 1115 + 27 bytes USER32! 77e719d0() USER32! 77e71982() N
Target Milestone: --- → mozilla1.0.1
Moving Mozilla 1.01 bugs to 'future' milestone with priority P1 I will be pulling bugs from 'future' milestones when scheduling later work.
Priority: -- → P1
Target Milestone: mozilla1.0.1 → Future
Mozilla 0.9.9 Gecko 20020304 debug build: a few other urls where a similar assert happens: cbs.com, citibank, greatwestern. (ASSERTION: no body node: 'bodyContent', file /mozilla/layout/html/style/src/nsCSSRendering.cpp, line 2468 citibank.com debug log: nsDebug::Assertion(const char * 0x02fe836c ??_C@_0N@KADF@no?5body?5node?$AA@, const char * 0x02fe837c ??_C@_0M@IAAH@bodyContent?$AA@, const char * 0x02fe8388 ??_C@_0EA@IGDH@d?3?2mozilla_src?2mozilla?2layout?2ht@, int 2468) line 291 + 13 bytes FindCanvasBackground(nsIPresContext * 0x04468330, nsIFrame * 0x0469348c, const nsStyleBackground * * 0x0012d07c) line 2468 + 38 bytes nsCSSRendering::FindBackground(nsIPresContext * 0x04468330, nsIFrame * 0x0469348c, const nsStyleBackground * * 0x0012d07c, int * 0x0012d074) line 2539 + 23 bytes nsContainerFrame::SyncFrameViewAfterReflow(nsIPresContext * 0x04468330, nsIFrame * 0x0469348c, nsIView * 0x0467de40, const nsRect * 0x0012d284, unsigned int 3) line 545 + 21 bytes nsContainerFrame::FinishReflowChild(nsIFrame * 0x0469348c, nsIPresContext * 0x04468330, const nsHTMLReflowState * 0x0012d13c, nsHTMLReflowMetrics & {...}, int 0, int 0, unsigned int 3) line 897 + 28 bytes nsBoxToBlockAdaptor::Reflow(nsBoxLayoutState & {...}, nsIPresContext * 0x04468330, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0, int 0, int 0, int 12660, int 9315, int 1) line 899 + 40 bytes nsBoxToBlockAdaptor::DoLayout(nsBoxToBlockAdaptor * const 0x045dc658, nsBoxLayoutState & {...}) line 620 + 46 bytes nsBox::Layout(nsBox * const 0x045dc658, nsBoxLayoutState & {...}) line 1052 nsScrollBoxFrame::DoLayout(nsScrollBoxFrame * const 0x046937c4, nsBoxLayoutState & {...}) line 395 nsBox::Layout(nsBox * const 0x046937c4, nsBoxLayoutState & {...}) line 1052 nsContainerBox::LayoutChildAt(nsBoxLayoutState & {...}, nsIBox * 0x046937c4, const nsRect & {...}) line 646 + 16 bytes nsGfxScrollFrameInner::LayoutBox(nsBoxLayoutState & {...}, nsIBox * 0x046937c4, const nsRect & {...}) line 1061 + 17 bytes nsGfxScrollFrameInner::Layout(nsBoxLayoutState & {...}) line 1216 nsGfxScrollFrame::DoLayout(nsGfxScrollFrame * const 0x046935cc, nsBoxLayoutState & {...}) line 1069 + 15 bytes nsBox::Layout(nsBox * const 0x046935cc, nsBoxLayoutState & {...}) line 1052 nsBoxFrame::Reflow(nsBoxFrame * const 0x04693594, nsIPresContext * 0x04468330, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1001 nsGfxScrollFrame::Reflow(nsGfxScrollFrame * const 0x04693594, nsIPresContext * 0x04468330, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 776 + 25 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x04693594, nsIPresContext * 0x04468330, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 782 + 31 bytes ViewportFrame::Reflow(ViewportFrame * const 0x04693450, nsIPresContext * 0x04468330, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 574 PresShell::InitialReflow(PresShell * const 0x04570000, int 12660, int 9315) line 2674 HTMLContentSink::StartLayout() line 3888 HTMLContentSink::DidBuildModel(HTMLContentSink * const 0x034c7b10, int 0) line 2725 CNavDTD::DidBuildModel(CNavDTD * const 0x0467f298, unsigned int 2152596471, int 1, nsIParser * 0x045af0f8, nsIContentSink * 0x034c7b10) line 670 + 14 bytes nsParser::DidBuildModel(unsigned int 2152596471) line 1388 + 41 bytes nsParser::Terminate() line 1471 nsHTMLDocument::StopDocumentLoad(nsHTMLDocument * const 0x040ad560) line 1059 DocumentViewerImpl::Stop(DocumentViewerImpl * const 0x0458bde8) line 1468 nsDocShell::Stop(nsDocShell * const 0x040d07f8, unsigned int 2) line 2434 LocationImpl::SetHrefWithBase(const nsAString & {...}, nsIURI * 0x045f7170, int 1) line 575 LocationImpl::SetHrefWithContext(JSContext * 0x03509758, const nsAString & {...}, int 1) line 510 + 25 bytes LocationImpl::Replace(LocationImpl * const 0x046450a0, const nsAString & {...}) line 886 + 21 bytes XPTC_InvokeByIndex(nsISupports * 0x046450a0, unsigned int 20, unsigned int 1, nsXPTCVariant * 0x0012e07c) line 106 XPCWrappedNative::CallMethod(XPCCallContext & {...}, XPCWrappedNative::CallMode CALL_METHOD) line 2020 + 42 bytes XPC_WN_CallMethod(JSContext * 0x03509758, JSObject * 0x0419de98, unsigned int 1, long * 0x04633418, long * 0x0012e358) line 1266 + 14 bytes js_Invoke(JSContext * 0x03509758, unsigned int 1, unsigned int 0) line 788 + 23 bytes js_Interpret(JSContext * 0x03509758, long * 0x0012f208) line 2745 + 15 bytes js_Execute(JSContext * 0x03509758, JSObject * 0x03544c18, JSScript * 0x04496458, JSStackFrame * 0x00000000, unsigned int 0, long * 0x0012f208) line 968 + 13 bytes JS_EvaluateUCScriptForPrincipals(JSContext * 0x03509758, JSObject * 0x03544c18, JSPrincipals * 0x04680c00, const unsigned short * 0x045f07c0, unsigned int 729, const char * 0x045e3c40, unsigned int 3, long * 0x0012f208) line 3339 + 25 bytes nsJSContext::EvaluateString(nsJSContext * const 0x035044e8, const nsAString & {...}, void * 0x03544c18, nsIPrincipal * 0x04680bfc, const char * 0x045e3c40, unsigned int 3, const char * 0x014b669c, nsAString & {...}, int * 0x0012f270) line 676 + 85 bytes nsScriptLoader::EvaluateScript(nsScriptLoadRequest * 0x045c0bf8, const nsAFlatString & {...}) line 587 nsScriptLoader::ProcessRequest(nsScriptLoadRequest * 0x045c0bf8) line 494 + 22 bytes nsScriptLoader::ProcessScriptElement(nsScriptLoader * const 0x044bdba8, nsIDOMHTMLScriptElement * 0x045c1040, nsIScriptLoaderObserver * 0x045c1044) line 437 + 15 bytes nsHTMLScriptElement::SetDocument(nsHTMLScriptElement * const 0x045c1018, nsIDocument * 0x040ad560, int 0, int 1) line 159 nsGenericHTMLContainerElement::AppendChildTo(nsGenericHTMLContainerElement * const 0x04573430, nsIContent * 0x045c1018, int 0, int 0) line 3926 HTMLContentSink::ProcessSCRIPTTag(const nsIParserNode & {...}) line 5091 HTMLContentSink::AddLeaf(HTMLContentSink * const 0x034c7b10, const nsIParserNode & {...}) line 3452 + 12 bytes CNavDTD::AddLeaf(const nsIParserNode * 0x044bd070) line 3802 + 25 bytes CNavDTD::AddHeadLeaf(nsIParserNode * 0x044bd070) line 3860 + 15 bytes CNavDTD::HandleStartToken(CToken * 0x046277a0) line 1729 + 12 bytes CNavDTD::HandleToken(CNavDTD * const 0x0467f298, CToken * 0x00000000, nsIParser * 0x045af0f8) line 895 + 12 bytes CNavDTD::BuildModel(CNavDTD * const 0x0467f298, nsIParser * 0x045af0f8, nsITokenizer * 0x04572d18, nsITokenObserver * 0x00000000, nsIContentSink * 0x034c7b10) line 521 + 20 bytes nsParser::BuildModel() line 2007 + 34 bytes nsParser::ResumeParse(int 1, int 0, int 1) line 1873 + 11 bytes nsParser::OnDataAvailable(nsParser * const 0x045af0fc, nsIRequest * 0x041af2c8, nsISupports * 0x00000000, nsIInputStream * 0x0442a1f0, unsigned int 0, unsigned int 896) line 2496 + 21 bytes nsDocumentOpenInfo::OnDataAvailable(nsDocumentOpenInfo * const 0x04098130, nsIRequest * 0x041af2c8, nsISupports * 0x00000000, nsIInputStream * 0x0442a1f0, unsigned int 0, unsigned int 896) line 241 + 46 bytes nsStreamListenerTee::OnDataAvailable(nsStreamListenerTee * const 0x04424db8, nsIRequest * 0x041af2c8, nsISupports * 0x00000000, nsIInputStream * 0x0466cf08, unsigned int 0, unsigned int 896) line 56 + 51 bytes nsHttpChannel::OnDataAvailable(nsHttpChannel * const 0x041af2cc, nsIRequest * 0x04655bfc, nsISupports * 0x00000000, nsIInputStream * 0x0466cf08, unsigned int 0, unsigned int 896) line 2572 + 57 bytes nsOnDataAvailableEvent::HandleEvent() line 193 + 70 bytes nsARequestObserverEvent::HandlePLEvent(PLEvent * 0x045c3014) line 116 PL_HandleEvent(PLEvent * 0x045c3014) line 590 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x01082d60) line 520 + 9 bytes _md_EventReceiverProc(HWND__ * 0x02380214, unsigned int 49489, unsigned int 0, long 17313120) line 1071 + 9 bytes USER32! 77e71820() 01082d60()
FYI: This assertion was added by dbaron, at waterson's request, when he fixed bug 118829. This assertion drives me nuts! I hit it when using my debug builds to browse and when reading mail with html attachments. When it does happen, I usually have to restart the app, because I get into this vicious circle of painting and hitting this assertion because on Win32 an assert pops up a dialog, which usually obscures a portion of the window that was being painted, which generates another paint event, which means the assertion is triggered again ... and on and on. I see this reliably when visiting http://my.netscape.com, so I've resorted to locally changing the assertion to an NS_WARNING() in every Win32 debug build I use for dogfood. If we can't fix the fact that there is no body, or figure out why it happens, can we at least change it to an NS_WARNING?
I get into the mode Kin describes all the time when testing/debugging some key embedding clients. I pretty much have to kill my app (on Windows) when i hit this assert since i get stuck in an endless loop like Kin. I second the idea of changing it to NS_WARNING unless there's a reason not to.
What does NS_WARNING do on Windows? Just print to the console, like NS_ASSERTION does on Linux? On Linux, I think NS_WARNING and NS_ASSERTION do the same thing. Or am I getting NS_WARNING and NS_WARN_IF_FALSE mixed up? Changing it to something that doesn't bring up a dialog (even an #ifdef DEBUG printf) is fine with me.
kin, you whiner. Fix the bug. ;-)
dbaron: it pops up a dialog, three choices, ignore, retry, abort. ignore lets the process continue, retry triggers the debugger, abort kills the app. it's very easy to accidentally trigger the wrong one. NS_WARNING does not give this dialog.
Does NS_WARN_IF_FALSE give the dialog?
Never mind. It clearly does. Taking bug, so I remember to fix it.
Assignee: attinasi → dbaron
Target Milestone: Future → mozilla1.1alpha
*** Bug 134665 has been marked as a duplicate of this bug. ***
Attached patch patchSplinter Review
Removes assertion completely and explains why we need the null check.
Comment on attachment 82674 [details] [diff] [review] patch sr=waterson.
Attachment #82674 - Flags: superreview+
Comment on attachment 82674 [details] [diff] [review] patch r=kin@netscape.com ... THANK YOU!! :-)
Attachment #82674 - Flags: review+
Fix checked in 2002-05-08 12:27 PDT.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
verified in mozilla and mfcEmbed. Assertion removed from nsCSSRendering.cpp. Mozilla 1.0.0+ Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.0+) Gecko/20020509
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: