ver-pelis-online.com shows "this page may be slowing down your browser" and crashes tab eventually
Categories
(Core :: Performance, defect)
Tracking
()
Performance Impact | none |
Tracking | Status | |
---|---|---|
firefox66 | --- | affected |
People
(Reporter: yoasif, Unassigned)
References
Details
(Keywords: nightly-community, Whiteboard: [webcompat])
Attachments
(1 file)
393.67 KB,
image/png
|
Details |
Saw this reported on twitter -- https://twitter.com/ariel_anonis/status/1083761234703470592
how to crash your @firefox and your system whit a web site "~# firefox --new-window http://ver-pelis-online.com/estrenos/527-venom-ver.html
STR:
- Open Firefox
- Visit http://ver-pelis-online.com/estrenos/527-venom-ver.html
- Wait
What happens:
I see the "a web page is slowing down your browser" message for a while until the tab eventually crashes.
Expected result:
The tab should not crash here, especially without generating a crash report.
Profile: https://perfht.ml/2VKC3il
FWIW, the page does not crash in Chromium.
Reporter | ||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 1•5 years ago
|
||
Profile that contains the page: https://perfht.ml/2QYfjb0
Comment 2•5 years ago
|
||
Chrome also runs the AdscoreInit function, but only takes 700ms in it, and the "d" function (which is what calls window.matchMedia) only ran for 15.9ms.
Comment 3•5 years ago
|
||
Emilio, do you have an idea what could be making window.matchMedia so expensive on this page?
Updated•5 years ago
|
Comment 4•5 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #3)
Emilio, do you have an idea what could be making window.matchMedia so expensive on this page?
My guess is that they're calling it a lot in some sort of infinite loop, looking at the GC in that page, but not sure yet. Will take a look.
Comment 5•5 years ago
|
||
Yeah, logging the calls to SetText shows:
SetText((min-device-width: -80303999px))
SetText((min-device-width: -80305999px))
SetText((min-device-width: -80307999px))
SetText((min-device-width: -80309999px))
SetText((min-device-width: -80311999px))
SetText((min-device-width: -80313999px))
[...]
SetText((min-device-width: -80559999px))
SetText((min-device-width: -80561999px))
SetText((min-device-width: -80563999px))
SetText((min-device-width: -80565999px))
SetText((min-device-width: -80567999px))
SetText((min-device-width: -80569999px))
SetText((min-device-width: -80571999px))
SetText((min-device-width: -80573999px))
SetText((min-device-width: -80575999px))
SetText((min-device-width: -80577999px))
SetText((min-device-width: -80579999px))
SetText((min-device-width: -80581999px))
SetText((min-device-width: -80583999px))
SetText((min-device-width: -80585999px))
SetText((min-device-width: -80587999px))
SetText((min-device-width: -80589999px))
SetText((min-device-width: -80591999px))
SetText((min-device-width: -80593999px))
SetText((min-device-width: -80595999px))
SetText((min-device-width: -80597999px))
SetText((min-device-width: -80599999px))
SetText((min-device-width: -80601999px))
SetText((min-device-width: -80603999px))
SetText((min-device-width: -80605999px))
SetText((min-device-width: -80607999px))
SetText((min-device-width: -80609999px))
SetText((min-device-width: -80611999px))
SetText((min-device-width: -80613999px))
SetText((min-device-width: -80615999px))
SetText((min-device-width: -80617999px))
SetText((min-device-width: -80619999px))
SetText((min-device-width: -80621999px))
SetText((min-device-width: -80623999px))
SetText((min-device-width: -80625999px))
SetText((min-device-width: -80627999px))
SetText((min-device-width: -80629999px))
SetText((min-device-width: -80631999px))
SetText((min-device-width: -80633999px))
SetText((min-device-width: -80635999px))
SetText((min-device-width: -80637999px))
SetText((min-device-width: -80639999px))
SetText((min-device-width: -80641999px))
SetText((min-device-width: -80643999px))
SetText((min-device-width: -80645999px))
SetText((min-device-width: -80647999px))
SetText((min-device-width: -80649999px))
SetText((min-device-width: -80651999px))
SetText((min-device-width: -80653999px))
SetText((min-device-width: -80655999px))
SetText((min-device-width: -80657999px))
SetText((min-device-width: -80659999px))
SetText((min-device-width: -80661999px))
SetText((min-device-width: -80663999px))
SetText((min-device-width: -80665999px))
SetText((min-device-width: -80667999px))
SetText((min-device-width: -80669999px))
SetText((min-device-width: -80671999px))
SetText((min-device-width: -80673999px))
SetText((min-device-width: -80675999px))
SetText((min-device-width: -80677999px))
SetText((min-device-width: -80679999px))
SetText((min-device-width: -80681999px))
SetText((min-device-width: -80683999px))
SetText((min-device-width: -80685999px))
SetText((min-device-width: -80687999px))
SetText((min-device-width: -80689999px))
SetText((min-device-width: -80691999px))
SetText((min-device-width: -80693999px))
SetText((min-device-width: -80695999px))
SetText((min-device-width: -80697999px))
SetText((min-device-width: -80699999px))
SetText((min-device-width: -80701999px))
SetText((min-device-width: -80703999px))
SetText((min-device-width: -80705999px))
SetText((min-device-width: -80707999px))
SetText((min-device-width: -80709999px))
SetText((min-device-width: -80711999px))
SetText((min-device-width: -80713999px))
SetText((min-device-width: -80715999px))
SetText((min-device-width: -80717999px))
SetText((min-device-width: -80719999px))
SetText((min-device-width: -80721999px))
SetText((min-device-width: -80723999px))
SetText((min-device-width: -80725999px))
SetText((min-device-width: -80727999px))
SetText((min-device-width: -80729999px))
SetText((min-device-width: -80731999px))
SetText((min-device-width: -80733999px))
SetText((min-device-width: -80735999px))
SetText((min-device-width: -80737999px))
SetText((min-device-width: -80739999px))
SetText((min-device-width: -80741999px))
SetText((min-device-width: -80743999px))
SetText((min-device-width: -80745999px))
SetText((min-device-width: -80747999px))
SetText((min-device-width: -80749999px))
SetText((min-device-width: -80751999px))
SetText((min-device-width: -80753999px))
SetText((min-device-width: -80755999px))
SetText((min-device-width: -80757999px))
SetText((min-device-width: -80759999px))
SetText((min-device-width: -80761999px))
SetText((min-device-width: -80763999px))
SetText((min-device-width: -80765999px))
SetText((min-device-width: -80767999px))
SetText((min-device-width: -80769999px))
SetText((min-device-width: -80771999px))
SetText((min-device-width: -80773999px))
SetText((min-device-width: -80775999px))
SetText((min-device-width: -80777999px))
[...]
SetText((min-device-width: -46171999px))
SetText((min-device-width: -46173999px))
SetText((min-device-width: -46175999px))
SetText((min-device-width: -46177999px))
SetText((min-device-width: -46179999px))
SetText((min-device-width: -46181999px))
SetText((min-device-width: -46183999px))
SetText((min-device-width: -46185999px))
SetText((min-device-width: -46187999px))
SetText((min-device-width: -46189999px))
SetText((min-device-width: -46191999px))
SetText((min-device-width: -46193999px))
SetText((min-device-width: -46195999px))
SetText((min-device-width: -46197999px))
SetText((min-device-width: -46199999px))
SetText((min-device-width: -46201999px))
I bet I know what's going on.
Comment 6•5 years ago
|
||
In particular, I bet they're trying to call matchMedia on a display: none iframe.
Comment 7•5 years ago
|
||
Bingo. So we're hitting:
Over and over, returning false. And the tracking script has a very stupid loop that doesn't stop on zero.
So this is basically bug 1490401.
Comment 8•5 years ago
|
||
Thanks! So this is a webcompat issue and not a perf bug.
Comment 10•5 years ago
|
||
(In reply to Emilio Cobos Álvarez (:emilio) from comment #7)
Bingo. So we're hitting:
Over and over, returning false. And the tracking script has a very stupid loop that doesn't stop on zero.
Sorry, new here! Just wanted to confirm my understanding of the line that you linked:
Semantically, what you are saying is that if presContext is NULL, then there is nothing being "presented" to the screen? That is why this causes a problem when the display is 'none'?
Thanks for the clarification!
Will
So this is basically bug 1490401.
Comment 11•5 years ago
|
||
(In reply to Will Hawkins from comment #10)
Semantically, what you are saying is that if presContext is NULL, then there is nothing being "presented" to the screen? That is why this causes a problem when the display is 'none'?
Yes, we only set up all the layout and presentation stuff when the frame is displayed. So for a display: none iframe we don't create a pres context / pres shell for that document.
Comment 12•5 years ago
|
||
(In reply to Emilio Cobos Álvarez (:emilio) from comment #11)
(In reply to Will Hawkins from comment #10)
Semantically, what you are saying is that if presContext is NULL, then there is nothing being "presented" to the screen? That is why this causes a problem when the display is 'none'?
Yes, we only set up all the layout and presentation stuff when the frame is displayed. So for a display: none iframe we don't create a pres context / pres shell for that document.
Thank you!
Comment 13•5 years ago
|
||
ni? myself to bring up with Mike at next webcompat triage meeting
Comment 14•5 years ago
|
||
Should be fixed via bug 1490401. Though the script seems to have been updated in the meantime.
Updated•2 years ago
|
Description
•