Closed Bug 109161 Opened 23 years ago Closed 22 years ago

usps.com - layout or table handling takes a very long time due to repeated reframing containing block calls from contentAppended

Categories

(Tech Evangelism Graveyard :: English US, defect)

x86
Windows 98
defect
Not set
major

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: nothimtheotherguy, Assigned: bc)

References

()

Details

(Keywords: perf, testcase)

Attachments

(2 files)

From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.5) Gecko/20011011
BuildID:    2001101117

This renders fine:

http://postcalc.usps.gov/speed.asp?OZ=32807&DZ=32807&P=1&O=0&Char=0&zipok=Continue&LP=package&OV=off&BL=off&Dir=forward&retspec=no

but if you click Priority Mail Help, the layout engine goes into an infinite
loop trying to display this page:

http://new.usps.com/cgi-bin/uspsbv/scripts/content.jsp?D=9743&B=Mail_or_Ship&A=B&U=X&U1=B&U2=H#priority

View source shows the page as appearing to be mostly one long string; there
doesn't seem to be CRLF/LFs between table rows (if that makes a difference).
I'm not sure if it is related to other rendering problems, such as those
handling cnn.com's pages, but there are other rendering problems too:

http://money.cnn.com/markets/

Click on an article. Many of them don't render properly:

http://money.cnn.com/2001/11/07/investing/futrelle/

Reproducible: Always
Steps to Reproduce:
1.
http://postcalc.usps.gov/speed.asp?OZ=32807&DZ=32807&P=1&O=0&Char=0&zipok=Continue&LP=package&OV=off&BL=off&Dir=forward&retspec=no
2. Click Priority Mail Help


Actual Results:  Browser goes into a loop repainting the screen every few
seconds. It never gets to the appropriate anchor. If I hit stop, the partially
rendered text is displayed as one tiny column on the left hand side.

Expected Results:  Should display the appropriate section/anchor in the file.

Since the pages it has trouble rendering include some of the main ones I use on
a daily basis, for me this is a major problem. For others, this might be an
ordinary bug.
I don't know whether this is hitting some edge case in incremental reflow or
what, but it makes Gecko twitch like it's being electrocuted.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: hang
Target Milestone: --- → mozilla0.9.8
We are continually reframing due to some content being appended in a
block-in-inline situation.  I hit ReframeContainingBlock several dozen times
loading the blinky-link, then I killed it.  This is getting to be a chronic
performance problem, and in this case, it is beyond a mere performance problem!
Status: NEW → ASSIGNED
Summary: layout or table handling goes into infinite loop → layout or table handling goes into infinite loop (reframing containing block)
Hopefully the patch for bug 56894 will fix this - I need to test it...
Assignee: attinasi → attinasi_layout
Status: ASSIGNED → NEW
Bulk push to next milestone
Target Milestone: mozilla0.9.8 → mozilla0.9.9
If I go to:

http://postcalc.usps.gov/speed.asp?OZ=32807&DZ=32807&P=1&O=0&Char=0&zipok=Continue&LP=package&OV=off&BL=off&Dir=forward&retspec=no

and click on Priority Mail Help, it does the load the page if I click on the
"stop" button using 2002013103 build on WINNT.

Marking nsbeta1+


Keywords: nsbeta1+
Testcase provided from url. Though this sample may need further reduction, it
reproduces the looping when reloading the document. Document contains a master
table multiple nested tables. I noticed many TD's contained in font elements as
well.
Keywords: testcase
Attached file Sample test from url
First, it is not an infinite loop - it is just a very long loop.  The page will
load but it take a very long time. The reason it takes so long is that the page
is INCREDIBLY BAD HTML!

There are thousands and thousands of illegal <font> tags in there, and they are
wrapping just about everything.  Unfortunately, that messes us up pretty bad as
we get data in incrementally, we end up having to continually reframe everything
because we are lame at handling block-in-inline situations, and that is what you
get when you have somethign like:

<font><p>sometext</font>

But there is worse than that in this markup. Stuff like

<font face="helvetica, arial" size="-1">
   <ul> 
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#first>First-Class Mail</a></li> 
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#priority>Priority Mail</a></li> 
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href="#priority flat rate">Priority Mail Flat Rate Envelope</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#express>Express Mail</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#parcel>Parcel Post</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#bpm>Bound Printed Matter</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#standard>Media Mail (Book Rate)</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <li><a href=#special>Special Services</a></li>
  </font>
  <font face="helvetica, arial" size="-1">
   <ul>
    <p>
     <li><a href=#cert1>Certificate of Mailing</a></li> 
  </font>

(indentation is mine).

So, the page is very large, and very poorly written, and it tickles a very
performance-challenged area of layout (block-in-inline).

Without attacking this at the parser side to create a cleaner content model, I
do not think that there is much we can do in layout. Optimizing content appended
handling of special block-in-inline situations would be the only real solution
to this kind of problem I think.

I will try to attach the content model so everyone can see the mess we are
expected to layout :)
Status: NEW → ASSIGNED
Keywords: hangperf
Summary: layout or table handling goes into infinite loop (reframing containing block) → [IB]layout or table handling takes a very long time due to repeated reframing containing block calls from contentAppended
The content model shows just how nasty this page is.  Loads of unnecesary
<font> tags, lots of illegal constructs inside of the fonts, etc.
BTW: that sample test from teh url causes 465 calls to
nsCSSFrameConstructor::ReframeContainingBlock - that is what is taking so long.

I want to move this to evangelism - clearing nsbeta1+ to get mgr approval...
Keywords: nsbeta1+nsbeta1
I thought of another idea that might help this class of performance problems. 
Here goes:

If we have special-inline-block situations and end up calling
ReframeContainingBlock more than, say, 3 times, we set a flag to tell the
ContentSink not to give layout incremental content updates.  Then, when the
document is completly loaded and the content model built, the content sink can
send it all over to layout in one shot.  We lose incremental loading, but we
also avoid the incredible performance problem of repeatedly destroying and
building all of the frames (465 times, in this case).

I'll play with it: this class of problems is not altogether rare, though
generally not as bad as this page.
bug 109181 convers the issue of minimizing the use of ReframeContainingBlock, so
this bug should be evangelized.
Reassigning to evang.
Assignee: attinasi_layout → nitot
Status: ASSIGNED → NEW
Component: Layout → African
Product: Browser → Tech Evangelism
QA Contact: petersen → momoi
Target Milestone: mozilla0.9.9 → ---
Version: other → unspecified
Keywords: evang500
Summary: [IB]layout or table handling takes a very long time due to repeated reframing containing block calls from contentAppended → usps.com - layout or table handling takes a very long time due to repeated reframing containing block calls from contentAppended
Wrong component/region (or was USPS relocated to Africa and no one told me ?)
Component: African->US Gov
Component: African → US Gov
*** Bug 127232 has been marked as a duplicate of this bug. ***
*** Bug 127472 has been marked as a duplicate of this bug. ***
re-assigning to default owner
Assignee: nitot → bclary
QA Contact: momoi → chrisn
does it now.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → WORKSFORME
tech evang june 2003 reorg
Component: US Gov → English US
Product: Tech Evangelism → Tech Evangelism Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: