[lvm-devel] [PATCH] testsuite: get stacktrace if test drops core

Petr Rockai prockai at redhat.com
Wed Mar 17 10:07:04 UTC 2010


Hi,

Mike Snitzer <snitzer at redhat.com> 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. (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.)

Otherwise, ACK.

Yours,
   Petr.




More information about the lvm-devel mailing list