diff options
Diffstat (limited to 'chromium/tools/valgrind/regrind.sh')
-rwxr-xr-x | chromium/tools/valgrind/regrind.sh | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/chromium/tools/valgrind/regrind.sh b/chromium/tools/valgrind/regrind.sh deleted file mode 100755 index 0f90ba737f0..00000000000 --- a/chromium/tools/valgrind/regrind.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -# Copyright (c) 2012 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# Scape errors from the valgrind bots, reproduce them locally, -# save logs as regrind-TESTNAME.log, and display any errors found. -# Also save files regrind-failed.txt listing failed tests, -# and regrind-failed-map.txt showing which bot URLs have which failed tests -# (handy when filing bugs). -# -# Only scrapes linux layout bot at the moment. -# TODO: handle layout tests that don't have obvious path to test file -# TODO: extend script to handle more kinds of errors and more tests - -# where the valgrind layout bot results live -LAYOUT_URL="http://build.chromium.org/p/chromium.memory.fyi/builders/Webkit%20Linux%20(valgrind%20layout)" -# how many builds back to check -LAYOUT_COUNT=250 - -# regexp to match valgrind errors -PATTERN="are definitely|uninitialised|Unhandled exception|\ -Invalid read|Invalid write|Invalid free|Source and desti|Mismatched free|\ -unaddressable byte|vex x86|the 'impossible' happened|\ -valgrind:.*: Assertion.*failed|VALGRIND INTERNAL ERROR" - -usage() { - echo "Usage: regrind.sh [--noscrape][--norepro][--keep]" - echo "--noscrape: don't scrape bots, just use old regrind-failed.txt" - echo "--norepro: don't reproduce locally" - echo "--keep: keep temp files" - exit 1 -} - -# Given a log on stdin, list all the tests that failed in that log. -layout_list_failed_tests() { - grep "Command:.*LayoutTests" | - sed 's/<.*>//' | - sed 's/.*LayoutTests/LayoutTests/' | - sort -u | - tr -d '\015' -} - -# Generate a list of failed tests in regrind-failed.txt by scraping bot. -# Scrape most recent first, so if user interrupts, he is left with fresh-ish data. -scrape_layout() { - rm -f regrind-*.tmp* regrind-failed.txt regrind-failed-map.txt - touch regrind-failed.txt - - # First, grab the number of the latest complete build. - wget -q -O regrind-builds.html "$LAYOUT_URL" - latest=`grep "<li><font .*" < regrind-builds.html | head -1 | sed 's/.*#//;s/<.*//'` - - echo "Fetching $LAYOUT_COUNT logs from bot" - # Scrape the desired number of runs (150 is about one cycle) - first=`expr $latest - $LAYOUT_COUNT` - i=$latest - while test $i -ge $first - do - url="$LAYOUT_URL/builds/$i/steps/valgrind%20test:%20layout/logs/stdio" - wget -q -O regrind-$i.tmp "$url" - # Did any tests fail in this file? - layout_list_failed_tests < regrind-$i.tmp > regrind-$i.tmp.failed - if test -s regrind-$i.tmp.failed - then - # Yes. Log them to stdout, - echo "$url" - cat regrind-$i.tmp.failed - # to the table regrind-failed-map.txt, - cat regrind-$i.tmp.failed | sed "s,^,$url ," >> regrind-failed-map.txt - # and, if not already there, to regrind-failed.txt. - for test in `cat regrind-$i.tmp.failed` - do - fgrep "$test" regrind-failed.txt > /dev/null 2>&1 || echo "$test" >> regrind-failed.txt - done - else - rm regrind-$i.tmp.failed - fi - # Sleep 1/3 sec per fetch - case $i in - *[036]) sleep 1;; - esac - i=`expr $i - 1` - done - - # Finally, munge the logs to identify tests that probably failed. - sh c.sh -l regrind-*.tmp > regrind-errfiles.txt - cat `cat regrind-errfiles.txt` | layout_list_failed_tests > regrind-failed.txt -} - -# Run the tests identified in regrind-failed.txt locally under valgrind. -# Save logs in regrind-$TESTNAME.log. -repro_layout() { - echo Running `wc -l < regrind-failed.txt` layout tests. - for test in `cat regrind-failed.txt` - do - logname="`echo $test | tr / _`" - echo "sh tools/valgrind/valgrind_webkit_tests.sh $test" - sh tools/valgrind/valgrind_webkit_tests.sh "$test" > regrind-"$logname".log 2>&1 - egrep "$PATTERN" < regrind-"$logname".log | sed 's/==.*==//' - done -} - -do_repro=1 -do_scrape=1 -do_cleanup=1 -while test ! -z "$1" -do - case "$1" in - --noscrape) do_scrape=0;; - --norepro) do_repro=0;; - --keep) do_cleanup=0;; - *) usage;; - esac - shift -done - -echo "WARNING: This script is not supported and may be out of date" - -if test $do_scrape = 0 && test $do_repro = 0 -then - usage -fi - -if test $do_scrape = 1 -then - scrape_layout -fi - -if test $do_repro = 1 -then - repro_layout -fi - -if test $do_cleanup = 1 -then - rm -f regrind-errfiles.txt regrind-*.tmp* -fi |