Note that the some of the multiple builds you see in the screenshot were manually triggered, otherwise only one per day is automatically scheduled.
What are Valgrind builds?
Running Firefox binaries with Valgrind helps to detect run-time memory management bugs, so it finds problems like use-after-frees (invalid reads/writes), uninitialized variables as well as memory leaks.
Note that the run-time speed of the application will take a substantial hit – it can take a long time to start up a Valgrind build. Moreover, a fairly powerful computer running Linux / Mac (preferably Linux) with about 4 GB memory is recommended. Tests are thus run once a day due to the slowdown, and we currently run only PGO tests (a small subset of our tests, note that our Valgrind builds are not PGO though).
How was this accomplished?
When I first embarked on this about 3-4 weeks ago, I found and helped to fixed 3 harness bugs, assisted in upgrading Valgrind twice, detected 35 potential issues at the time of writing (some of which were intended leaks), with 3 non-sensitive ones being fixed, some being recent regressions and one other being potentially security-sensitive. With the issues now known and filed as bugs, they were added to suppression files which also live in the mozilla-central tree. I also accidentally stumbled on a supposed TBPL selfserve bug that turned out to be a Firefox regression.
How can we help?
This is just a small step forward. In the future, ideally we should:
- Bug 551155 – support Helgrind (thanks Julian)
- Bug 631838 – run them on the Try server
- Bug 631842 – add a Make target for Valgrind
- Bug 696308 – run on more platforms (Firefox OS / B2G included!)
- Bug 793508 – turn TBPL orange instead of red when there is a Valgrind test failure
- Bug 794627 – run more tests (e.g. mochitests)
- Bug 795124 – run tests on test machines instead of build machines
- Bug 799232 – support Mach
and we should also incorporate AddressSanitizer (Asan) builds into TBPL. (Asan is a faster memory error detector than Valgrind, and sometimes finds a different class of bugs, but it does not detect uninitialized values the way Valgrind does)
Christian Holler [:decoder] has some regular Asan builds but they are only run through the Try servers.
Shout-outs go out to the following people: Julian Seward, Nicholas Nethercote, Jesse Ruderman, Ted Mielczarek, Releng folks Chris AtLee, Nick Thomas and Rail Aliiev, our sheriffs edmorley, philor, RyanVM, and all others whom I have inadvertently left out. Without any of your collaboration and hard work we would be unable to have this set of Valgrind greenery. You folks rock!
Edit: Bug 800435 has been fixed, Valgrind builds now appear by default, thanks Ehsan! See the following screenshot:
Edit 2: It’s been re-hidden again because it’s “not a tier-1 platform“.
Bonus: Here’s a video showing the Endeavour Space Shuttle flypast in Mountain View. Just in case you haven’t seen it. 🙂