jump to anchor freezes Fx for about 15 s in 500 K data

RESOLVED FIXED in mozilla9

Status

()

Core
Layout
P2
normal
RESOLVED FIXED
6 years ago
6 years ago

People

(Reporter: Stefan, Assigned: bz)

Tracking

(Depends on: 1 bug, {regression, testcase})

Trunk
mozilla9
regression, testcase
Points:
---
Dependency tree / graph
Bug Flags:
in-testsuite ?

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments)

(Reporter)

Description

6 years ago
User Agent:  

Steps to reproduce:

1. Open testcase, allow to finish loading (jumps to the end).
2. Click at "click and wait 1"


Actual results:

2. Fx freezes for about 15 s


Expected results:

Jumps to anchor immediately. No freeze.
(Reporter)

Comment 1

6 years ago
Created attachment 557562 [details]
Testcase version 0
(Reporter)

Updated

6 years ago
Attachment #557562 - Attachment mime type: text/plain → text/html
(Reporter)

Comment 2

6 years ago
good 2.0.0.19
bad  3.0.19
(Reporter)

Updated

6 years ago
OS: Other → Linux
Hardware: Other → x86_64
This regressed between 1.9a7pre: 2007071506 and 1.9a7pre: 2007071605

Range:
http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=PhoenixTinderbox&branch=HEAD&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2007-07-15+06%3A00%3A00&maxdate=2007-07-16+05%3A00%3A00&cvsroot=%2Fcvsroot

likely Bug 388019, no?
Status: UNCONFIRMED → NEW
Component: General → Layout
Ever confirmed: true
Keywords: regression, testcase
OS: Linux → All
Product: Firefox → Core
QA Contact: general → layout
Hardware: x86_64 → All
Stefan, thanks for the testcase!

So the issue here is that we spend 85% of our time constructing line iterators (which involves two walks over the line list: once to count the lines and once to stick them in the array) and then 15% more finding the line containing a given frame.

The reason the construction takes so long is that the <a name="xX"> contains all the text on the page.  So when we do the walk over continuations in PresShell::DoScrollContentIntoView we end up calling AccumulateFrameBounds 10498 times.  And each call constructs a line iterator for a block that has 14815 lines.

I can make this part faster, but the FindLineContaining cost will still be there, of course.  That's bug 682052.
Depends on: 682052
(Reporter)

Comment 5

6 years ago
(In reply to Boris Zbarsky (:bz) from comment #4)
> The reason the construction takes so long is that the <a name="xX"> contains
> all the text on the page.  

Thanks for the hint, I forgot to close the <a> tags.

> I can make this part faster, but the FindLineContaining cost will still be
> there, of course.  That's bug 682052.

Why does it jump so fast with Fx 2?
Because we fixed bug 66619 since then, which involves looking at continuations; that's needed to make multi-line links scroll sanely.
Blocks: 66619
Created attachment 557906 [details] [diff] [review]
Speed up iterating over the continuations of the frame when scrolling to it.
Attachment #557906 - Flags: review?(roc)
Assignee: nobody → bzbarsky
Priority: -- → P2
Whiteboard: [need review]
Attachment #557906 - Flags: review?(roc) → review+
Whiteboard: [need review] → [need landing]
http://hg.mozilla.org/integration/mozilla-inbound/rev/64c328251a24
Flags: in-testsuite?
Whiteboard: [need landing]
Target Milestone: --- → mozilla9
Backed out - https://tbpl.mozilla.org/?tree=Mozilla-Inbound&usebuildbot=1&rev=d01a282b5a40 should be the clearest rev to see the orange from this set, free from the leak that backout fixed.
This patch wasn't the problem; repushed as http://hg.mozilla.org/integration/mozilla-inbound/rev/16813bde78b9
http://hg.mozilla.org/mozilla-central/rev/16813bde78b9
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.