[Libguestfs] Useful tip: Run guestfsd under gdb and print stack trace on exit
Richard W.M. Jones
rjones at redhat.com
Wed Oct 1 13:28:00 UTC 2014
Useful for tracking down segfaults in the daemon. This is not
upstreamable right now.
Example usage:
$ ./run guestfish -v -x -a /dev/null run : debug segv ""
[...]
libguestfs: trace: launch = 0
libguestfs: trace: debug "segv" ""
guestfsd: main_loop: new request, len 0x34
Program received signal SIGSEGV, Segmentation fault.
debug_segv (subcmd=0x4687050 "segv", argc=0, argv=0x4687070) at debug.c:223
223\tdebug.c: No such file or directory.
#0 debug_segv (subcmd=0x4687050 "segv", argc=0, argv=0x4687070) at debug.c:223
#1 0x000000000042e083 in debug_stub (xdr_in=<optimized out>) at stubs.c:2557
#2 0x0000000000448d5d in dispatch_incoming_message (xdr_in=0x7fffffffe8d0) at stubs.c:15819
#3 0x0000000000428a91 in main_loop (_sock=73953360, _sock at entry=3) at proto.c:192
#4 0x000000000040564d in main (argc=<optimized out>, argv=<optimized out>) at guestfsd.c:344
Rebooting.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
-------------- next part --------------
>From 9bd0fe0e2790e0136684245dc6a97f6ec4e24502 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones at redhat.com>
Date: Wed, 1 Oct 2014 14:15:41 +0100
Subject: [PATCH] appliance: Run guestfsd under gdb and print stack trace on
exit.
---
appliance/init | 10 ++--------
appliance/packagelist.in | 1 +
2 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/appliance/init b/appliance/init
index 6d62338..52da01f 100755
--- a/appliance/init
+++ b/appliance/init
@@ -132,14 +132,8 @@ if ! grep -sq guestfs_rescue=1 /proc/cmdline; then
fi
# Run guestfsd, under valgrind if asked.
- $vg guestfsd
- if [ $? -eq 119 ]; then
- echo "DAEMON VALGRIND FAILED"
- # Sleep so valgrind messages are seen by the host. Note this
- # only happens in non-production builds
- # (--enable-valgrind-daemon) + on an error path.
- sleep 10
- fi
+ gdb -batch -ex "run" -ex "bt" guestfsd
+ sleep 10
else
# Run virt-rescue shell.
diff --git a/appliance/packagelist.in b/appliance/packagelist.in
index 276b4c2..a1ecada 100644
--- a/appliance/packagelist.in
+++ b/appliance/packagelist.in
@@ -216,6 +216,7 @@ e2fsprogs
file
findutils
gawk
+gdb
gdisk
grep
gzip
--
2.0.4
More information about the Libguestfs
mailing list