Hang Detector and Reporter:/Test Plan
Hang Detector and Reporter
|Feature||Status||Lead engineer||QA Lead||Status|
|Hang Detector and Reporter||Development in progress||Vladan Djeric||Simona Badau||OK|
- The Hang Reporter feature - reports transient main thread hangs to Telemetry.
- It relies on having Firefox compiled with frame pointers to unwind call stacks and because of this it is only useful on Windows builds from the Profiling branch.
- The Hang Reporter functionality is #ifdef'd out on regular release builds.
- It will not be enabled in release builds and the intended audience is Firefox developers.
Demo of the functionality: The minimum steps to see a demo of the functionality is to set up the profiling Nightly and the Symbolication Server locally.
How to set up the profiling Nightly:
1. Install the profiling link from here
2. Go to Help menu -> Options -> Advanced -> Update -> enable the option to 'Never check for updates' -> OK
3. Go to Help menu -> Options -> Advanced -> General -> enable the option to 'Submit performance data'.
4. Install the custom about:telemetry add-on
5. Download some of the symbols for Nightly profiling build by extracting the zip locally.
6. Run “git clone git://github.com/vdjeric/Snappy-Symbolication-Server.git” in Windows command line.
7. Edit the Snappy Symbolication Server’s “sample.conf” file:
- the firefoxSymbolsPath and the osSymbolsPath have to point to the “symbols_ffx” directory downloaded in step 5.
8. Run the symbolication server locally with the command “python symbolicationWebService.py sample.conf”.
9. To see the hang stacks go to your profiling Nightly -> in about config enable the pref toolkit.telemetry.enabled to true -> navigate to about:telemetry page -> click on 'Force Hang' button -> reload the page and click on the 'Symbolicate Stacks' button.
The stack should look like this:
Hang report #1 (18 seconds):
??? (in ntdll.dll)
PRMJ_Now (in mozjs.dll)
js_Date(JSContext *,unsigned int,JS::Value *) (in mozjs.dll)
- the minimum interval for capturing a hang is 10 seconds;
- the value of the hang can be changed in about:config via the preference hangmonitor.timeout;
- Check the hang stacks:
- having the telemetry disabled or the hangmonitor.timeout pref set to zero;
- having the telemetry enabled or the hangmonitor.timeout pref set to zero;
- having the telemetry disabled or the hangmonitor.timeout pref set to non-zero;
- having the telemetry enabled or the hangmonitor.timeout pref set to non-zero;
- The test cases for this feature can be viewed here.
- 712109 - Implement non-fatal chromehang by turning on frame-pointers on a branch
Sign off Criteria
- All the test cases were executed.
- All the major bugs have been fixed.