Page 1 of 2

Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Sun Aug 23, 2009 5:09 pm
by Morac
I'm running NoScript 1.9.8.4 under Firefox 3.5.2 under Windows XP SP3.

Lately I've noticed that when interacting with certain Flash objects, such as playing movies, zooming to full screen, etc that Firefox starts using 100% of the CPU for a while. The time can be anywhere from 5 seconds to several minutes (or longer). During this time Firefox stops responding.

I finally tracked the problem down to NoScript. When NoScript is running, sometimes Flash objects get "stuck" and the browser ends up using 100% of the CPU. Sometimes the browser will recover after a few minutes, other times it won't and I'll have to kill the browser. I tried resetting the NoScript options back to the default, globally allowing all scripts, disabling ABE all with no effect. I'm not getting any script timeout errors. It seems to be some kind of weird interaction between NoScript and the Flash 10.0.32.18 plugin.

Take for example, this page:
http://www.zillow.com/homes/for_sale/map/60965_rid/

Once the map loads, if I tried to zoom in by clicking Street without NoScript installed, the result is pretty much instantaneous and Firefox never uses more than 50% of the CPU. With NoScript installed, zooming in or out is slow and uses 100% of the CPU for about 5 to 10 seconds. If I add the Adblock 1.1 addon, it will use 100% of the CPU for even longer, yet Adblock 1.1 by itself (with NoScript enabled) does not hang. Once the browser recovers, zooming in and out is nearly instantaneous unless I reload the page.

I've also seen this problem in Google Reader when reading RSS feeds that contain embedded flash players. The page loads fine, but if I try to play the video or make it full screen the browser hangs with the same 99% CPU usage. Sometimes it recovers in a minute, other times it does not. This doesn't happen all the time, but once it starts, it continues until I restart the browser.


I tried creating a new profile with no addons or plugins installed (except Flash 10.0.32.18) and once I install NoScript 1.9.8.4 I see the issue (on the Zillow.com page). I've tried NoScript 1.9.8.5, but that has the same problem. I've tried going back a number of NoScript versions and, at least on the zillow.com page, it makes no difference.

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 3:26 pm
by therube
I'm not seeing that (on Zillow).
CPU increases as the map loads & as items are enumerated.
Once that finishes, CPU load drops down.
(Note that even having the mouse cursor hovering the map can cause <some> CPU load.)

Separately, on some Flash movie sites, I had noticed higher then expected CPU usage during playback that I don't recall noticing before. Don't know if that is NoScript related or not.

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 3:41 pm
by Giorgio Maone
Does clearing the NoScript Options|Plugins|ClearClick protection on pages... trusted help?

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 3:48 pm
by Morac
Giorgio Maone wrote:Does clearing the NoScript Options|Plugins|ClearClick protection on pages... trusted help?
Yes, clearing that option gets rid of the high CPU usage on that page.

Toggling between that option being set and not set is like night and day. With it set, the page can hang for several minutes. With it cleared the page does not hang at all. Any idea why ClearClick protection would be causing high CPU usage with Flash objects?

I'll mention that I'm seeing this issue on two different computers (both running Windows XP). One of the computers has a dual core CPU so it only maxes out 50% of the CPU (since only 1 CPU is maxed out).

Thanks for responding.

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 4:17 pm
by Giorgio Maone
ClearClick checks any click you make on a Flash object to find if the zone you're clicking on is obstructed.
The checks normally take just a few milliseconds, but on a very crowded page they can take a bit more because they can cause some background reflow of the page content.
However I cannot notice any "hang" on Zillow, even with ClearClick fully enabled.
This might indicate an extension conflict. Does the problem keep happening if you disable all your extensions except NoScript?

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 4:36 pm
by therube
(In my tests (SeaMonkey 1.1.17 & 2.) I had ClearClick fully enabled.)

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 4:45 pm
by Morac
Giorgio Maone wrote: This might indicate an extension conflict. Does the problem keep happening if you disable all your extensions except NoScript?
It gets better with all other addons disabled, in that the page doesn't hang for minutes on end, but it still hangs for about 5 to 10 seconds with only NoScript enabled.

If I only enable both AdBlock 1.1 and NoScript, it hangs for much longer than it does with just NoScript. If I enable just AdBlock, it does not hang at all.


I mainly notice this problem when using Google Reader to display a number of RSS feeds simultaneously. I'm assuming this would be considered a "very crowded page". It gets so bad on that page at times that I either have to go for a walk until the browser recovers or kill the browser.

How come the "unresponsive script" timeout alert doesn't appear in these instances?

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 4:55 pm
by Morac
I decided to enable logging to see what NoScript was doing, but since it doesn't dump out the log time in the data, I can't really tell how long it took from that, but from my own time keeping it froze for about 30 to 45 seconds. Here's the data if you are interested. This is on a machine with a 3 GHz processor:
[NoScript] EMBED, mousedown, ({})
----------
[NoScript] DocPatcher.collectPositioned(): 254
----------
[NoScript] Rect: 195,113,758,513
----------
[NoScript] [object XPCNativeWrapper [object HTMLEmbedElement]]({width:563, height:400, screenX:252, screenY:254, x:195, y:113}) -- box: 195,113
----------
[NoScript] Snapshot at ({width:350, height:200, screenX:252, screenY:254, x:195, y:113, oX:195, oY:113, oW:563, oH:400}) + 0, 0
----------
[NoScript] ClearClick: EMBED mousedown(s:{301,332}, p:{244,191}, c:{244,191, w:1}) - obstructed: false, check time: 8968, quarantine: 1251132494721, primary: true, ccp:({obstructed:false, lastEtype:"mousedown"})
----------
[NoScript] ClearClick: unlocking EMBED mousedown
----------
[NoScript] EMBED, blur, ({obstructed:false, lastEtype:"mousedown", unlocked:true})
----------
[NoScript] EMBED, mouseup, ({obstructed:false, lastEtype:"blur", unlocked:true})
----------
[NoScript] EMBED, click, ({obstructed:false, lastEtype:"mouseup", unlocked:true})
----------
[NoScript] EMBED, keydown, ({obstructed:false, lastEtype:"click", unlocked:true})
----------
[NoScript] EMBED, keydown, ({obstructed:false, lastEtype:"keydown", unlocked:true})
----------
[NoScript] EMBED, blur, ({obstructed:false, lastEtype:"keydown", unlocked:true})
----------
[NoScript] ClearClick: resetting status on EMBED/-1 for blur
----------
[NoScript] EMBED, keyup, ({obstructed:false, lastEtype:"blur", unlocked:false})
----------
[NoScript] DocPatcher.collectPositioned(): 181
----------
[NoScript] Rect: 195,113,758,513
----------
[NoScript] [object XPCNativeWrapper [object HTMLEmbedElement]]({width:563, height:400, screenX:252, screenY:254, x:195, y:113}) -- box: 195,113
----------
[NoScript] Snapshot at ({width:350, height:200, screenX:308, screenY:294, x:251, y:153, oX:195, oY:113, oW:563, oH:400}) + 0, 0
----------
[NoScript] ClearClick: EMBED keyup(s:{undefined,undefined}, p:{0,0}, c:{undefined,undefined, w:13}) - obstructed: false, check time: 1481, quarantine: 1251132633456, primary: true, ccp:({obstructed:false, lastEtype:"keyup", unlocked:false})
----------
[NoScript] ClearClick: unlocking EMBED keyup
----------
[NoScript] EMBED, blur, ({obstructed:false, lastEtype:"keyup", unlocked:true})
----------
[NoScript] ClearClick: resetting status on EMBED/-1 for blur

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 5:03 pm
by therube
How did you get that log?

There were some issues for some with Adblock Plus 1.1. Should look to update to 1.1.1.

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 5:07 pm
by Giorgio Maone
According to your log, the total check time has been about 8 seconds (which is very long, but definitely less than your reported 30-45 seconds).
My suspect is that something else is sucking processor time at the same time as the ClearClick checks, making them slower (as I said, 8 seconds are definitely too much) and hanging Firefox for longer.
So there's definitely something going on, but probably not entirely from NoScript.

@therube:
about:config, noscript.consoleDump -> 4096

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 6:46 pm
by Morac
therube wrote: There were some issues for some with Adblock Plus 1.1. Should look to update to 1.1.1.
I double checked and I actually do have ADP 1.1.1.

Giorgio Maone wrote: My suspect is that something else is sucking processor time at the same time as the ClearClick checks, making them slower (as I said, 8 seconds are definitely too much) and hanging Firefox for longer.
So there's definitely something going on, but probably not entirely from NoScript.
Okay I think I tracked down the culprit to Roboform, but unless ClearClick is enabled, hardy any CPU is used. So it must be some kind of interaction between Roboform and NoScript.

I'm not sure whose fault this would be exactly since by itself Roboform works fine. I've seen "check times" of over 10 seconds even with all other addons (including Roboform for real) disabled. My guess is that this GUI hang is somehow interfering with Roboform and causing it to hang as well, though I've had other GUI hangs triggered by web pages and that never has any impact on Roboform.
[NoScript] ClearClick: EMBED mousedown(s:{398,325}, p:{235,191}, c:{235,191, w:1}) - obstructed: true, check time: 13645, quarantine: 1251140008875, primary: true, ccp:({obstructed:true, lastEtype:"mousedown"})
BTW Roboform can attach itself to Firefox even if it's add-on is disabled which is why I thought it was AdBlock since I disabled the Roboform add-on, but not the attachment processing.

On a whim, I tried turning on the Chrome JIT javascript enhancement, but it didn't make a difference.


Edit:

I checked RoboForm and it calls a component (.dll) function "ProcessBrowserTree" on the mouseup event. I can't see that function, but based on what Roboform does, my guess is that it tries to parse the browser page for certain data. This and NoScript's ClearClick check would run simultaneously. If NoScript is hanging the process for 7 to 13 seconds, that might cause problems in RoboForm's component.

Edit2:

Commenting out Roboform's mouseup processing doesn't make a difference. Whatever is happening, it appears that Roboform and NoScript are running simultaneously since I managed to get a NoScript clear check run time of 73 seconds, even though I have Firefox set to chrome timeout after 20 seconds. Chrome timeout doesn't work on Roboform though since it's a component.

"[NoScript] ClearClick: EMBED mousedown(s:{402,350}, p:{239,191}, c:{239,191, w:1}) - obstructed: true, check time: 73257, quarantine: 1251140478609, primary: true, ccp:({obstructed:true, lastEtype:"mousedown"})"

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 7:13 pm
by Giorgio Maone
Thanks for narrowing it down.
Actually it makes a lot of sense: ClearClick checks for Flash embeddings involve two or three radical modifications in the DOM structure: I can imagine that if Roboform performs its "ProcessBrowserTree" stuff everytime the document model is changed, it goes berserk by multiplying the CPU time sucked out.
Still, 10 secs are a huge lot...

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 7:47 pm
by therube
about:config, noscript.consoleDump -> 4096
OK, color me dumb? Once that is done, then what? What do I look for & where do I find it.

Slight hang & ClearClick report# 326120 at Zillow.

(The Report ID: # should be clickable to make it easier to copy to clipboard.)

Code: Select all

[NoScript ClearClick] Swallowed event mousedown on EMBED/-1 at http://www.zillow.com/homes/for_sale/map/60965_rid/
Looks to be repeatable so long as the house thumbnail displays & you attempt to click the + or - Zoom control.

Image

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 8:17 pm
by Giorgio Maone
therube wrote:
about:config, noscript.consoleDump -> 4096
OK, color me dumb? Once that is done, then what? What do I look for & where do I find it.
You need to start your browser with the "-console" command line argument.

Re: Noscript 1.9.8.4 causing Flash pages to use 100% CPU

Posted: Mon Aug 24, 2009 8:38 pm
by therube
Thanks.