Closed
Bug 25509
Opened 25 years ago
Closed 25 years ago
Getting full log from tinderbox causes mozilla to hang
Categories
(Core :: Layout, defect, P3)
Tracking
()
VERIFIED
FIXED
M14
People
(Reporter: dp, Assigned: nisheeth_mozilla)
References
()
Details
(Whiteboard: [PDT+])
I thought we had a fast network library and a great incremental layout engine.
So when I see full log it should just stream in and get displayed
instantaneously and get updated....
What really happened was the browser was hanging displaying no data and worse
freezing the entire app. No redisplay of chrome even when exposed. I will let it
run for a while and add to the bug if I see anything positive.
Comment 1•25 years ago
|
||
Why did you think we had a fast network library and a great incremental layout
engine?
Comment 2•25 years ago
|
||
We're not freezing, we executing what seems to be at least a geometric if not
exponential algorithm to layout this poor (albeit lengthy) text file. Here's a
typical snapshot of what's going on:
USER32! 77e72572()
nsViewManager::UpdateView(nsViewManager * const 0x02f37930, nsIView *
0x02f55aa0, const nsRect & {x=0x00000078 y=0x0013fbed width=0x00003390
height=0x000000ff}, unsigned int 0x00000004) line 1502
nsFrame::Invalidate(nsIPresContext * 0x02ee2940, const nsRect & {x=0x00000000
y=0x0013ec00 width=0x00003390 height=0x000000ff}, int 0x00000000) line 1582
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x02b95390, int
* 0x0012d688, int 0x00000001) line 2856
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2557 + 27 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x00df0d60, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 1532 + 15 bytes
nsBlockReflowContext::ReflowBlock(nsIFrame * 0x00df0d60, const nsRect &
{x=0x00000000 y=0x00000e4a width=0x00002ce2 height=0x40000000}, int 0x00000001,
int 0x0000012b, int 0x00000000, nsMargin & {top=0x00000000 right=0x00000000
bottom=0x00000000 left=0x00000000}, unsigned int & 0x00000000) line 425 + 45
bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineBox *
0x02670f00, int * 0x0012dfa8) line 3426 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x02670f00, int
* 0x0012dfa8, int 0x00000001) line 2746 + 23 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2557 + 27 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x022022d0, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 1532 + 15 bytes
nsBlockReflowContext::ReflowBlock(nsIFrame * 0x022022d0, const nsRect &
{x=0x00000000 y=0x00000000 width=0x00002dd2 height=0x40000000}, int 0x00000001,
int 0x00000000, int 0x00000001, nsMargin & {top=0x00000000 right=0x00000000
bottom=0x00000000 left=0x00000000}, unsigned int & 0x00000000) line 425 + 45
bytes
nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineBox *
0x02f56770, int * 0x0012e8c8) line 3426 + 59 bytes
nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineBox * 0x02f56770, int
* 0x0012e8c8, int 0x00000001) line 2746 + 23 bytes
nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2557 + 27 bytes
nsBlockFrame::Reflow(nsBlockFrame * const 0x02202284, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 1532 + 15 bytes
nsAreaFrame::Reflow(nsAreaFrame * const 0x02202284, nsIPresContext * 0x02ee2940,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 272 + 25 bytes
nsContainerFrame::ReflowChild(nsIFrame * 0x02202284, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000)
line 637 + 31 bytes
RootFrame::Reflow(RootFrame * const 0x0220bd14, nsIPresContext * 0x02ee2940,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 331
nsContainerFrame::ReflowChild(nsIFrame * 0x0220bd14, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int
0x00000000, int 0x00000000, unsigned int 0x00000001, unsigned int & 0x00000000)
line 637 + 31 bytes
nsScrollPortFrame::Reflow(nsScrollPortFrame * const 0x0220bd9c, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 404
nsContainerFrame::ReflowChild(nsIFrame * 0x0220bd9c, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int
0x00000000, int 0x00000000, unsigned int 0x00000003, unsigned int & 0x00000000)
line 637 + 31 bytes
nsGfxScrollFrameInner::ReflowFrame(nsIPresContext * 0x02ee2940,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000, nsIFrame * 0x0220bd9c, const nsSize & {width=0x00002dd2
height=0x000020d0}, const nsSize & {width=0x00002dd2 height=0x000020d0}, int &
0x00000000, nsIFrame * & 0x00000000) line 1254
nsGfxScrollFrameInner::ReflowScrollArea(nsIPresContext * 0x02ee2940,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000, int & 0x00000000, int & 0x00000000, int & 0x00000001, nsIFrame * &
0x00000000) line 1322
nsGfxScrollFrame::Reflow(nsGfxScrollFrame * const 0x0220bd50, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 509
nsContainerFrame::ReflowChild(nsIFrame * 0x0220bd50, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int
0x00000000, int 0x00000000, unsigned int 0x00000000, unsigned int & 0x00000000)
line 637 + 31 bytes
ViewportFrame::Reflow(ViewportFrame * const 0x0220bcd8, nsIPresContext *
0x02ee2940, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...},
unsigned int & 0x00000000) line 531
nsHTMLReflowCommand::Dispatch(nsHTMLReflowCommand * const 0x02ba69b0,
nsIPresContext * 0x02ee2940, nsHTMLReflowMetrics & {...}, const nsSize &
{width=0x00002eb3 height=0x000021b1}, nsIRenderingContext & {...}) line 145
PresShell::ProcessReflowCommands(PresShell * const 0x02f36ce0, int 0x00000000)
line 1944
PresShell::ExitReflowLock(PresShell * const 0x02f36ce0, int 0x00000001) line 858
PresShell::ContentChanged(PresShell * const 0x02f36ce8, nsIDocument *
0x02ef1e80, nsIContent * 0x025774bc, nsISupports * 0x02ba0ce0) line 2448
nsDocument::ContentChanged(nsDocument * const 0x02ef1e80, nsIContent *
0x025774bc, nsISupports * 0x02ba0ce0) line 1514
nsGenericDOMDataNode::AppendData(const nsString &
{"d/mozilla/layout/base/public'
../../../config/nsinstall -R -m 444
_xpidlgen/layout.xpt ../../../dist/bin/components
gmake[4]: "}) line 356 + 32
bytes
nsTextNode::AppendData(nsTextNode * const 0x025774b0, const nsString &
{"d/mozilla/layout/base/public'
../../../config/nsinstall -R -m 444
_xpidlgen/layout.xpt ../../../dist/bin/components
gmake[4]: "}) line 54 + 18
bytes
SinkContext::FlushText(int * 0x00000000, int 0x00000000) line 1882 + 39 bytes
SinkContext::AddText(const nsString &
{"s/tinderbox/SeaMonkey/Linux_2.2.5-22smp_depend/mozilla/layout/html/document/sr
c'
gmake[4]: Leaving directory `/builds/tinderbo"}) line 1744 + 12 bytes
SinkContext::AddLeaf(const nsIParserNode & {...}) line 1564 + 23 bytes
HTMLContentSink::AddLeaf(HTMLContentSink * const 0x02ef49e0, const nsIParserNode
& {...}) line 2851 + 15 bytes
CNavDTD::AddLeaf(const nsIParserNode * 0x02f5caf0) line 3262 + 28 bytes
CNavDTD::HandleDefaultStartToken(CToken * 0x02587da0, nsHTMLTag eHTMLTag_text,
nsIParserNode * 0x02f5caf0) line 1161 + 12 bytes
CNavDTD::HandleStartToken(CToken * 0x02587da0) line 1472 + 22 bytes
CNavDTD::HandleToken(CNavDTD * const 0x02f35e30, CToken * 0x02587da0, nsIParser
* 0x02ef4b00) line 829 + 12 bytes
CNavDTD::BuildModel(CNavDTD * const 0x02f35e30, nsIParser * 0x02ef4b00,
nsITokenizer * 0x02f357e0, nsITokenObserver * 0x00000000, nsIContentSink *
0x02ef49e0) line 568 + 20 bytes
nsParser::BuildModel() line 1078 + 34 bytes
nsParser::ResumeParse(nsIDTD * 0x00000000, int 0x00000000) line 993 + 11 bytes
nsParser::OnDataAvailable(nsParser * const 0x02ef4b04, nsIChannel * 0x02ee25e0,
nsISupports * 0x00000000, nsIInputStream * 0x02ef75c4, unsigned int 0x00000000,
unsigned int 0x00002000) line 1372 + 19 bytes
nsDocumentOpenInfo::OnDataAvailable(nsDocumentOpenInfo * const 0x02ee7680,
nsIChannel * 0x02ee25e0, nsISupports * 0x00000000, nsIInputStream * 0x02ef75c4,
unsigned int 0x00000000, unsigned int 0x00002000) line 192 + 46 bytes
InterceptStreamListener::OnDataAvailable(InterceptStreamListener * const
0x02ef75c0, nsIChannel * 0x02ee25e0, nsISupports * 0x00000000, nsIInputStream *
0x02ef5348, unsigned int 0x00000000, unsigned int 0x00002000) line 1122
nsHTTPResponseListener::OnDataAvailable(nsHTTPResponseListener * const
0x02ef54a0, nsIChannel * 0x02ef2354, nsISupports * 0x02ee25e0, nsIInputStream *
0x02ef5348, unsigned int 0x00084000, unsigned int 0x00002000) line 195 + 58
bytes
nsOnDataAvailableEvent::HandleEvent(nsOnDataAvailableEvent * const 0x02ba07f0)
line 370
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x02ba4900) line 93 + 12 bytes
PL_HandleEvent(PLEvent * 0x02ba4900) line 526 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00c84090) line 487 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x03290cb0, unsigned int 0x0000c080, unsigned int
0x00000000, long 0x00c84090) line 975 + 9 bytes
USER32! 77e71820()
00c84090()
Off to Nisheeth.
Assignee: warren → nisheeth
Severity: major → critical
Component: Networking → Layout
Comment 3•25 years ago
|
||
I've been investigating this some more, and it seems like there's also a problem
(or maybe it's entirely the problem) in
nsFileTransport::SetNotificationCallbacks. This calls GetProxyObject which does
massive amounts of file I/O. Dougt should take a look.
Comment 4•25 years ago
|
||
More info: I ran Quantify on viewer, first visiting the default viewer test
page, and then the tinderbox log page. I subtracted out the time spend in wait
and i/o routines, and determined that 89% of the time left was spent in
nsTextNode::AppendData, which calls nsGenericDOMDataNode::AppendData
-> nsDocument::ContentChanged -> PresShell::ContentChanged ->
PresShell::ExitReflowLock -> PresShell::ProcessReflowCommands, etc.
Comment 5•25 years ago
|
||
Giving a real URL to a tinderbox log.
I just noticed bug 21637 -- looks like a dup.
Comment 6•25 years ago
|
||
I just checked in a change that restricts the length of a text node (the maximum
is settable via the content.maxtextrun and defaults to 8k). This improves the
speed of laying this page out considerably. Note that it doesn't change the
control flow of the page in bug 21637 by much since that test case doesn't have
long text runs.
I'll let Nisheeth decide what he wants to do with the bug.
| Assignee | ||
Comment 7•25 years ago
|
||
With Vidur's changes, tinderbox logs load substantially faster and no longer
hang mozilla. I'm marking this bug fixed.
Text layout performance needs to be further improved and bug 21637 can be used
to track that issue after beta 1.
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•