After filing a few dozens of Valgrind suppressions to keep the memory
waterfall green I've started thinking there should be some easier and more
effective way to do it.
What I disliked the most was that once a suppression is commited, one had to
wait 2-4 hours for the current build cycle to end and one more cycle with
the new suppression.
Since we have three different platforms which can have the same report with
subtle differences in mangling (I hate mangling btw), this complicates stuff
a lot and sometimes it's quite a waste of time for the suppression writers.
Recently I've created a script to simplify this routine and we've (me and
glider@) tried it with good results.
You can give it a try:
fetch: download memory waterfall logs for those builds which have failed
(usually that means there is an unsuppressed Valgrind report)
Nicolas, Marc-Antoine, I hope the fetch doesn't DDoS the waterfall. At least
it downloads almost the same amount of logs a Valgrind sheriff would
download manually to get the reports. Probably we can optimize here if
*match*: list all the fetched reports that don't match local suppressions
Typical workflow is as follows:
*svn up tools/valgrind/memcheck* # get your suppressions in sync
*./tools/valgrind/waterfall.sh match* # get the list of reports
*<write new suppressions or generalize existing>*
*./tools/valgrind/waterfall.sh match # make sure the number of reports
*[optional: generalize the new suppression to match more reports - vimdiff
is your friend]*
*./tools/valgrind/waterfall.sh match* # make sure the number of reports
decreased even more
*<file a bug>*
*<commit a suppression>*
Your feedback and patches are welcome!