Flash/Hang Debugging
A number of our Windows users are seeing flash hangs on a regular basis. If you would like to help Mozilla's engineers diagnose and fix those problems for our users once and for all, please follow the process below.
A typical Flash hang happens when a movie or animation starts and Firefox becomes unresponsive for several seconds or minutes.
Getting Started
First of all: thanks you for your help. Firefox and the Open Web will be better off once we've put this bug down for good.
Before we can begin, you'll need:
- An account on Google Drive, Dropbox or some other utility that allows you to share large files. These files will be too large to send over email, and may contain personal information, so please share them only with the form provided.
- Install a Windows tool called Process Explorer
- An up-to-date copy of Firefox. You can make sure your copy is up to date by looking in the Help menu, and selecting "About Firefox".
- An up-to-date-copy of Flash. (VERIFY THAT THIS IS WHAT WE WANT)
Setting Up
You'll need to start by opening About:Config to set some preferences. Type "about:config" in the URL bar and hit enter. If this is the first time you've done this, you'll be presented with a warning message telling you to be careful, and you should click the button saying you will.
Find the following prefs and set them the following prefs to disable the built-in plugin hang monitoring, use the standard Flash sandboxing configuration, and disabling JITs for better debuggability:
- Set dom.ipc.plugins.hangUITimeoutSecs to 0
- Set dom.ipc.plugins.timeoutSecs to 0
- Set dom.ipc.plugins.flash.disable-protected-mode to false
- Set dom.ipc.plugins.sandbox-level.flash to 0
- Set javascript.options.baselinejit to false
- Set javascript.options.ion;false
Once that's done, restart Firefox and start Process Explorer, and start browsing the internet.
Collecting Data
When you experience a Flash hang, open up Process Explorer to collect full debugging dumps from three processes. In process explorer you should see a list of nested processes including firefox.exe.
You want to select the following processes:
- firefox.exe
- plugin-container.exe (if there is more than one, you want the one with a child FlashPlayerPlugin process)
- there should be two FlashPlayerPlugin processes. You want the deeper (second) one - see the diagram below.
Check the CPU usage of the processes and make sure that it is close to 0. If it is close to 1, STOP NOW; and ask Benjamin Smedberg for assistance. For each of the three processes, choose Process -> Create Dump -> Create Full Dump
After you have collected the data, you should be able to kill the plugin-container process with a right-click in Process Explorer to un-hang Firefox.
Sending the Data to Mozilla
The dump files will be too large to email or add to Bugzilla. You'll need to uploade them to Dropbox or Google Drive, and then share them with bsmedberg@mozilla.com.
---- ADD GOOGLE FORM HERE ---- Do not share these files with everyone: they are likely to contain some personal information such as passwords or bookmarks.
File a bug at bugzilla.mozilla.org product "Core" component "Plug-Ins". Include the following information:
- What you were doing at the time of the hang, as exactly as possible.
- Links to the exact page you were on at the time of the hang.
- Was there only one tab open, or multiple tabs?
- Did you move the mouse over the plugin content, click on it, or type at any point?
- Did you choose any full-screen mode?
- The exact build of Firefox that you were using at the time. The best way to collect this is copy it from about:support in the browser.
- A link to the dump files on dropbox/google drive.
- If you are willing, a note that it is acceptable to forward these dump files to Adobe engineers to aid with debugging.
