mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 05:56:58 +02:00
The "function" keyword is superfluous, not in POSIX, is inconsistent between bash files, and generally makes me angry. So convert every instance to the form: foo() { BUG=None TEST=`cbuildbot x86-generic-paladin` works Change-Id: I97f5ca30a3edfef7222b1e08ac23917dc613b556 Reviewed-on: https://gerrit.chromium.org/gerrit/22467 Reviewed-by: David James <davidjames@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org>
79 lines
1.8 KiB
Bash
Executable File
79 lines
1.8 KiB
Bash
Executable File
#!/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 "$@"
|
|
|
|
usage() {
|
|
echo "Usage: $0 url_or_path_to_debug_tgz url_to_bvt_test_results"
|
|
}
|
|
|
|
if [ -z "$1" ] ; then
|
|
usage
|
|
die_notrace "The URL or path to symbols tarball (debug.tgz) is required"
|
|
fi
|
|
|
|
if [ -z "$2" ] ; then
|
|
usage
|
|
die_notrace "The URL to BVT test results is required"
|
|
fi
|
|
|
|
# Die on any errors.
|
|
switch_to_strict_mode
|
|
|
|
BREAKPAD_DIR="debug/breakpad"
|
|
STACKS_GENERATED=""
|
|
OUTPUT_DIR="$(mktemp -d)"
|
|
|
|
extract_tarball() {
|
|
info "Extracting breakpad symbols from $1..."
|
|
tar zxf "$1" -C "${OUTPUT_DIR}" "${BREAKPAD_DIR}"
|
|
}
|
|
|
|
generate_stacktrace() {
|
|
echo "$1.txt"
|
|
minidump_stackwalk "$1" "${OUTPUT_DIR}/${BREAKPAD_DIR}" \
|
|
>"$1.txt" 2>/dev/null
|
|
}
|
|
|
|
find_and_generate_stacktraces() {
|
|
find "${OUTPUT_DIR}" -name "*.dmp" |
|
|
while read filename ; do
|
|
generate_stacktrace "${filename}"
|
|
done
|
|
}
|
|
|
|
cleanup() {
|
|
if [ -n "${OUTPUT_DIR}" -a -z "${STACKS_GENERATED}" ] ; then
|
|
rm -rf "${OUTPUT_DIR}"
|
|
fi
|
|
}
|
|
|
|
trap cleanup INT TERM EXIT
|
|
|
|
info "Downloading minidumps from $2..."
|
|
wget -q -nv -r -l 10 -np -A "*.dmp" -P "${OUTPUT_DIR}" $2
|
|
if [[ -z "$(find "${OUTPUT_DIR}" -name "*.dmp")" ]] ; then
|
|
die "No minidumps found"
|
|
fi
|
|
|
|
if [[ -f "$1" ]] ; then
|
|
extract_tarball "$1"
|
|
else
|
|
info "Downloading symbols tarball from $1..."
|
|
wget -P "${OUTPUT_DIR}" "$1"
|
|
TARBALL="${OUTPUT_DIR}/$(basename $1)"
|
|
extract_tarball "$TARBALL"
|
|
rm -f "$TARBALL"
|
|
fi
|
|
|
|
info "Generating stack traces..."
|
|
STACKS_GENERATED=$(find_and_generate_stacktraces)
|
|
echo $STACKS_GENERATED
|