Closed Bug 1302731 Opened 3 years ago Closed 3 years ago

out of control flash script can bring entire browser to its knees

Categories

(Core :: Plug-ins, defect)

defect
Not set

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: bkelly, Unassigned)

Details

Load this page in a fresh nightly 51 with e10s and flash enabled:

http://www.todayshomeowner.com/how-to-calculate-kitchen-range-hood-fan-size/

It may depend on the exact adds served, but I see the plugin container growing in memory over time.  It grows slowly at first but after a few minutes on my machine it falls off the cliff spiking to over 2GB.

When the browser parent has trouble handling requests from the content child processes.  For example, I can't open a new page at the moment.  The other symptom I have seen is that typing in a content window textbox becomes extremely slow.  (For example a gmail compose window.)

When it gets into this state I see the "slow script" banner briefly popping down every few seconds.  It does not stay down long enough for me to click anything.

I cannot close the offending tab in this situation.  I have to manually kill the plugin container process for the browser to recover.

This seems to affect both e10s and non-e10s.  The symptoms above are for e10s.  In non-e10s the entire browser chrome starts becoming unresponsive.  The entire browser just freezes.
Here's a profile:

https://cleopatra.io/#report=5125ac266e80006c8a828c837241ef467f4cb23d

A pretty insane amount of sync RPC from the plugin container to the parent process here.

Benjamin, do you know who would be best to look at this sort of thing?
Flags: needinfo?(benjamin)
This seems to be a case of "websites can hang content". Plugins are inherently synchronous with respect to content.

If there's a straight-up hang, we're supposed to show a plugin hang dialog (on Windows) after 10 seconds, or kill the plugin outright after 60 seconds. But if this a case of the plugin just being very slow or ilooping, it's basically the same as if a website had setTimeout iloop or similar hogging usage.
Flags: needinfo?(benjamin)
I'm fixing the setTimeout case over in bug 1300659.  Perhaps this will be addressed by my plans in bug 1284369.
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.