From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Snitzer Date: Wed, 17 Mar 2010 10:30:53 -0400 Subject: testsuite: get stacktrace if test drops core In-Reply-To: <87vdcv8do7.fsf@twilight.int.mornfall.net.> References: <20100316204454.GA25921@redhat.com> <87vdcv8do7.fsf@twilight.int.mornfall.net.> Message-ID: <20100317143053.GA3836@redhat.com> List-Id: To: lvm-devel@redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Wed, Mar 17 2010 at 6:07am -0400, Petr Rockai wrote: > Hi, > > Mike Snitzer writes: > > Requires lvm be built with debugging (-g). > > Also requires ulimit -c be non-zero (to drop core file). > > > > diff --git a/test/test-utils.sh b/test/test-utils.sh > > index 6606c56..06b9636 100644 > > --- a/test/test-utils.sh > > +++ b/test/test-utils.sh > > @@ -24,6 +24,21 @@ STACKTRACE() { > > echo "$i ${FUNC}() called from ${BASH_SOURCE[$i]}:${BASH_LINENO[$i]}" > > i=$(($i + 1)); > > done > > + > > + # Attempt to get a stacktrace if a core file exists > > + # and the lvm binary was built with debugging > > + TEST_LVM_BINARY=$(dirname $(which lvm))/../../tools/lvm > > + TEST_LVM_CORE=`ls core* | head -1` > > + GDB_BINARY=`which gdb` > > + READELF_BINARY=`which readelf` > > + if [ -n "$TEST_LVM_CORE" -a -n "$GDB_BINARY" -a -n "$READELF_BINARY" ]; then > > + if $READELF_BINARY -S $TEST_LVM_BINARY 2>&1 | grep -q .debug_info; then > > + echo bt > gdb_commands.txt > > + echo l >> gdb_commands.txt > > + echo quit >> gdb_commands.txt > > + $GDB_BINARY -batch -c $TEST_LVM_CORE -x gdb_commands.txt $TEST_LVM_BINARY > > + fi > > + fi > > } > > > > init_udev_transaction() { > Looks good to me. Maybe change "bt" to "bt full"? That would also list > local variables on the stack, so more useful data. OK, I'll use "bt full". > (Maybe even make it "thread apply all bt full", although we don't > currently use threads here and we don't handle dmeventd coredumps > either... maybe later.) Right, we can always change it as needed. > Otherwise, ACK. Thanks, Mike