summaryrefslogtreecommitdiff
path: root/tests/run-coredump-unwind
diff options
context:
space:
mode:
authorMartin Milata <mmilata@redhat.com>2012-05-17 17:00:59 +0200
committerMartin Milata <mmilata@redhat.com>2012-05-31 11:00:40 +0200
commit0f9a540c8c67ec4bb2e03130feea00a0cc9bf30c (patch)
treecf55e22b846eaf58bb902535758224cbd1dac112 /tests/run-coredump-unwind
parent61a173763ea4fdc46b34785fc343a483bf3f4c9e (diff)
downloadlibunwind-0f9a540c8c67ec4bb2e03130feea00a0cc9bf30c.tar.gz
coredump: add test
Program test-coredump-unwind was modified to map backing files based on virtual addresses instead of segment numbers. The crasher.c is a program that essentially calls some functions and then writes to invalid address causing a crash. Before that, it detects which executables are mapped to which virtual addresses and writes this information to a file suitable for consumption by test-coredump-unwind. The mapping information is obtained form /proc/self/maps, so currently it only works on linux. The test itself is a shell script, which first runs the program and then runs test-coredump-unwind on the resulting core and address space map file to check whether the stack trace obtained from the dump roughly corresponds to what it should look like. Signed-off-by: Martin Milata <mmilata@redhat.com>
Diffstat (limited to 'tests/run-coredump-unwind')
-rwxr-xr-xtests/run-coredump-unwind20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/run-coredump-unwind b/tests/run-coredump-unwind
new file mode 100755
index 00000000..18060c51
--- /dev/null
+++ b/tests/run-coredump-unwind
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+TESTDIR=`pwd`
+TEMPDIR=`mktemp -d`
+
+# create core dump
+(
+ cd $TEMPDIR
+ ulimit -c 10000
+ $TESTDIR/crasher $TEMPDIR/backing_files
+) 2>/dev/null
+COREFILE=$TEMPDIR/core*
+
+# fail if any command fails
+set -e
+
+# magic option -testcase enables checking for the specific contents of the stack
+./test-coredump-unwind $COREFILE -testcase `cat $TEMPDIR/backing_files`
+
+rm -r -- $TEMPDIR