For the record, I’ve never been a huge fan of Flash, or at least Macromedia/Adobe’s reference implementation of it. I’ve especially hated the way web designers have used it for presenting content. I can’t stand the fact that so much Internet advertising creative is produced in it. The one place where using Flash makes sense is for platform-agnostic media widgets, i.e., embedded video and audio players.
After the February 2006 change to Internet Explorer due to the Eolas patent, I was looking forward to browsers not auto-executing embedded Flash in web pages. To put it mildly, I was thrilled by the news! Of course, it didn’t take long for folks to figure out workarounds to the change and outside of some temporary disruption, everything was business as usual again.
I bet you’re asking “who really cares? Flash works just fine for me.” To you, I say: great, you’re either lucky, or not very observant of when your system is sucking because Firefox is consuming all your CPU time. Here’s a frequent occurrence on my system:
Yes, WTF? 75% of the CPU is being consumed by … what exactly?
Ah, npswf32.dll, the glorious Flash Player plugin. Looking at the list of DLL handles, I find that this was being loaded from C:\Program Files\Mozilla Firefox\plugins, which happened to be:
Yes, I realize that Flash 9.0 r28 is old, probably from late 2006 and it’s already the middle of 2007. But, before you try to ridicule me for complaining about bugs that have already been fixed, this has apparently been a known issue since 2004! The resolution in that bug report is that allegedly been “fixed” in a more recent version of Flash. Great, so I’ve now upgraded to 9.0 r45, which appears to be the most current version as of this moment. Of course, it removed the old DLL from the previous location and installed the new one into C:\WINDOWS\system32\Macromed\Flash, for what good reason, I have no idea.
I referred to Adobe’s Flash as a “reference implementation” above because I strongly believe that unless Adobe makes the source available in an open fashion, the marketplace needs an open-source alternative. Fortunately, the Free Software Foundation (FSF) has a GNU Flash player project called Gnash which is actively being developed. I’m hoping effort achieves sufficient progress to put some real pressure on Adobe to either fix these kinds of bugs in a more timely fashion, or open up their source so the larger developer community can self-serve and provide their own fixes.
In the meantime, I’m finally going to give the Firefox add-on Flashblock a try. I’m hoping it’ll accomplish essentially what I’d hoped the Eolas patent would provide, which is an easy way for me to selectively execute Flash assets embedded on a page without them firing up automatically. Ideally, I’d want a whitelist of URL fragments (domain, domain and path, etc.) that I do want to automatically execute on page load, but I’ll take what I can get at this point.
I’ll try to post an update as to whether the upgrade from r28 to r45 has made this CPU-sucking bug go away, but right now, I’m hoping for the best.