blob: 5b21038e2087302211121a63cc0c8a9b61e65f57 [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Script to generate stackdumps from BVT failures.
# This can only run inside the chroot since we need minidump_stackwalk.
. "$(dirname $0)/common.sh" || { echo "Unable to load common.sh"; exit 1; }
assert_inside_chroot "$@"
function usage() {
echo "Usage: $0 url_to_debug_tgz url_to_bvt_test_results"
}
if [ -z "$1" ] ; then
usage
die "The URL to symbols tarball (debug.tgz) is required"
fi
if [ -z "$2" ] ; then
usage
die "The URL to BVT test results is required"
fi
# Die on any errors.
set -e
BREAKPAD_DIR="debug/breakpad"
DEBUG_TGZ=$(basename $1)
STACKS_GENERATED=""
OUTPUT_DIR=$(mktemp -d)
function generate_stacktrace() {
echo "$1.txt"
minidump_stackwalk $1 ${OUTPUT_DIR}/${BREAKPAD_DIR} > $1.txt 2> /dev/null
}
function find_and_generate_stacktraces() {
find ${OUTPUT_DIR} -name *.dmp |
while read filename ; do
generate_stacktrace ${filename}
done
}
function cleanup() {
if [ -n "${OUTPUT_DIR}" -a -z "${STACKS_GENERATED}" ] ; then
rm -rf ${OUTPUT_DIR}
fi
}
trap cleanup INT TERM EXIT
info "Downloading symbols tarball..."
wget -P ${OUTPUT_DIR} $1
info "Extracting breakpad symbols..."
tar zxf ${OUTPUT_DIR}/${DEBUG_TGZ} -C ${OUTPUT_DIR} ${BREAKPAD_DIR}
rm ${OUTPUT_DIR}/${DEBUG_TGZ}
info "Downloading minidumps from test results..."
wget -q -nv -r -np -A "*.dmp" -P ${OUTPUT_DIR} $2
info "Generating stack traces..."
STACKS_GENERATED=$(find_and_generate_stacktraces)
echo $STACKS_GENERATED
if [ -z "${STACKS_GENERATED}" ] ; then
warn "No minidumps found"
fi