freezing loading brazilian constitution source code
Categories
(Core :: Layout: Generated Content, Lists, and Counters, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox-esr91 | --- | wontfix |
firefox93 | --- | wontfix |
firefox94 | --- | wontfix |
firefox95 | --- | fixed |
People
(Reporter: matheusarmelindeoliveira, Assigned: MatsPalmgren_bugz)
References
(Regression)
Details
(Keywords: perf, regression)
Attachments
(1 file)
(deleted),
text/x-phabricator-request
|
Details |
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Steps to reproduce:
Open these web site: https://www.planalto.gov.br/ccivil_03/constituicao/constituicao.htm
Click to see source code page
Actual results:
Freezes the Firefox window and consumes lot of memory system
Expected results:
See the source code of brazilian constitution
Comment 1•3 years ago
|
||
The Bugbug bot thinks this bug should belong to the 'Core::Memory Allocator' component, and is moving the bug to that component. Please revert this change in case you think the bot is wrong.
Updated•3 years ago
|
Comment 2•3 years ago
|
||
I can reproduce, and I captured a profile of it: https://share.firefox.dev/3mQFuCl On my fast macbook, displaying the source code caused 14.4s of jank in the content process. Most of the time is spent in nsCounterList::SetScope.
Emilio, do you think there's anything actionable here? If so, feel free to forward the needinfo. Thanks!
Comment 3•3 years ago
|
||
Looks like an O(n^2) in the counters code? Is it reasonably better on your machine with layout.css.counter-ancestor-scope.enabled=false
by any chance?
Comment 4•3 years ago
|
||
Yes, with the pref set to false, it goes down to 2.2s instead of 14.4s: https://share.firefox.dev/3j1njsO
Comment 5•3 years ago
|
||
Mats, perhaps you can take a look?
Updated•3 years ago
|
Assignee | ||
Comment 6•3 years ago
|
||
Does anyone know where does our view-source code lives? (i.e. the part that generates the markup, and what CSS we apply to that)
Assignee | ||
Comment 7•3 years ago
|
||
Assignee | ||
Comment 8•3 years ago
|
||
Assignee | ||
Updated•3 years ago
|
Updated•3 years ago
|
Comment 9•3 years ago
|
||
Set release status flags based on info from the regressing bug 1548753
Comment 10•3 years ago
|
||
(In reply to Mats Palmgren (:mats) from comment #6)
Does anyone know where does our view-source code lives? (i.e. the part that generates the markup, and what CSS we apply to that)
The css seems to be https://searchfox.org/mozilla-central/source/layout/style/res/viewsource.css, and the code generating the markup seems to be https://searchfox.org/mozilla-central/source/parser/html/nsHtml5Highlighter.cpp and surrounding files.
It's possible to see the generated markup by selecting some of it and using "View Selection Source" in the context menu.
Comment 11•3 years ago
|
||
Pushed by mpalmgren@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fc201411942f Make finding CSS counter scopes on ancestors faster. r=emilio
Comment 12•3 years ago
|
||
Backout by ctuns@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/dea767819680 Backed out changeset fc201411942f for causing hybrid build bustages on nsCounterManager.cpp CLOSED TREE
Comment 13•3 years ago
|
||
Backed out for causing hybrid build bustages on nsCounterManager.cpp
Assignee | ||
Comment 14•3 years ago
|
||
layout/base/nsCounterManager.cpp(156,51): error: incompatible pointer types assigning to 'nsIFrame *' from 'nsContainerFrame '
[task 2021-10-15T21:26:20.561Z] 21:26:20 INFO - for (auto p = aNode->mPseudoFrame; p; p = p->GetParent())
WTF? That's a compiler bug, right?
It should be perfectly fine to assign a 'nsContainerFrame *' result to an 'nsIFrame *' variable.
What is this "Bp-hybrid" target about anyway?
Comment 15•3 years ago
|
||
(In reply to Mats Palmgren (:mats) from comment #14)
layout/base/nsCounterManager.cpp(156,51): error: incompatible pointer types assigning to 'nsIFrame *' from 'nsContainerFrame '
[task 2021-10-15T21:26:20.561Z] 21:26:20 INFO - for (auto p = aNode->mPseudoFrame; p; p = p->GetParent())WTF? That's a compiler bug, right?
It should be perfectly fine to assign a 'nsContainerFrame *' result to an 'nsIFrame *' variable.What is this "Bp-hybrid" target about anyway?
I'm not sure, maybe Aryx can help you with that.
Comment 16•3 years ago
|
||
Bp-hybrid compiles most of the code non-unified. Details in bug 1725125. :Andi could be contacted for more info.
Assignee | ||
Comment 17•3 years ago
|
||
Oh, so it's a non-unified build that didn't get nsContainerFrame.h included in this file probably. Gotcha, I'll fix that, thanks.
Still, it's a bit sad when you push to Try to check "will this break anything" and everything is green, and then it still breaks... :-(
https://treeherder.mozilla.org/jobs?repo=try&revision=3be1e36150da0c092562f688a05789a77f38c382
Comment 18•3 years ago
|
||
Pushed by mpalmgren@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d1784b93ac61 Make finding CSS counter scopes on ancestors faster. r=emilio
Assignee | ||
Comment 19•3 years ago
|
||
Fwiw, I don't know how I feel about commits being backed out just because they fail a non-unified build.
It seems like that will cause a lot of unnecessary churn in our commit history...
Fixing these build errors is almost always as simple as adding a missing #include
,
which takes less than a minute to fix if someone is around...
Comment 20•3 years ago
|
||
bugherder |
Comment 21•3 years ago
|
||
The patch landed in nightly and beta is affected.
:mats, is this bug important enough to require an uplift?
If not please set status_beta
to wontfix
.
For more information, please visit auto_nag documentation.
Comment 22•3 years ago
|
||
I think this can ride the trains. Feel free to scream if you feel strongly otherwise.
Description
•