All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] testsuite: get stacktrace if test drops core
@ 2010-03-16 20:44 Mike Snitzer
  2010-03-16 21:22 ` Mike Snitzer
  2010-03-17 10:07 ` [PATCH] " Petr Rockai
  0 siblings, 2 replies; 4+ messages in thread
From: Mike Snitzer @ 2010-03-16 20:44 UTC (permalink / raw)
  To: lvm-devel

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() {



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* testsuite: get stacktrace if test drops core
  2010-03-16 20:44 [PATCH] testsuite: get stacktrace if test drops core Mike Snitzer
@ 2010-03-16 21:22 ` Mike Snitzer
  2010-03-17 10:07 ` [PATCH] " Petr Rockai
  1 sibling, 0 replies; 4+ messages in thread
From: Mike Snitzer @ 2010-03-16 21:22 UTC (permalink / raw)
  To: lvm-devel

On Tue, Mar 16 2010 at  4:44pm -0400,
Mike Snitzer <snitzer@redhat.com> wrote:

> 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() {

FYI, I verified that this change is compatible as far back as RHEL4.3.

Both gdb and readelf are commandline and runtime compatible (relative to
how they are used above).

Mike



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] testsuite: get stacktrace if test drops core
  2010-03-16 20:44 [PATCH] testsuite: get stacktrace if test drops core Mike Snitzer
  2010-03-16 21:22 ` Mike Snitzer
@ 2010-03-17 10:07 ` Petr Rockai
  2010-03-17 14:30   ` Mike Snitzer
  1 sibling, 1 reply; 4+ messages in thread
From: Petr Rockai @ 2010-03-17 10:07 UTC (permalink / raw)
  To: lvm-devel

Hi,

Mike Snitzer <snitzer@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.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* testsuite: get stacktrace if test drops core
  2010-03-17 10:07 ` [PATCH] " Petr Rockai
@ 2010-03-17 14:30   ` Mike Snitzer
  0 siblings, 0 replies; 4+ messages in thread
From: Mike Snitzer @ 2010-03-17 14:30 UTC (permalink / raw)
  To: lvm-devel

On Wed, Mar 17 2010 at  6:07am -0400,
Petr Rockai <prockai@redhat.com> wrote:

> Hi,
> 
> Mike Snitzer <snitzer@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.

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



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-03-17 14:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-16 20:44 [PATCH] testsuite: get stacktrace if test drops core Mike Snitzer
2010-03-16 21:22 ` Mike Snitzer
2010-03-17 10:07 ` [PATCH] " Petr Rockai
2010-03-17 14:30   ` Mike Snitzer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.