On 01/24/2012 05:02 PM, Richard W.M. Jones wrote:
From: "Richard W.M. Jones"<rjones@redhat.com>
This commit allows you to run the daemon under valgrind. You have to enable it at configure time:
./configure --enable-valgrind-daemon
This should *not* be done for production builds.
When this feature is enabled, valgrind is added to the appliance and the daemon is run under valgrind. Log messages from valgrind are passed back over a virtio-serial channel into a file called 'valgrind.log.$PID' in the top build directory.
Running 'make check', 'make extra-tests' etc causes many valgrind.log.* files to be created which must be examined by hand. --- .gitignore | 1 + appliance/Makefile.am | 9 +++++++-- appliance/init | 10 +++++++++- appliance/packagelist.in | 4 ++++ configure.ac | 15 +++++++++++++++ src/guestfs.c | 8 ++++++++ src/launch.c | 10 ++++++++++ 7 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/appliance/init b/appliance/init index 0f32a55..1d69339 100755 --- a/appliance/init +++ b/appliance/init @@ -106,8 +106,16 @@ if grep -sq guestfs_verbose=1 /proc/cmdline; then fi
if ! grep -sq guestfs_rescue=1 /proc/cmdline; then + # Run the daemon under valgrind if ./configure --enable-valgrind-daemon + vg_channel=/dev/virtio-ports/org.libguestfs.valgrind + if [ -w $vg_channel ]; then + exec 3>$vg_channel
You might want to check the return of exec for failure.
+ vg="valgrind --leak-check=full --log-fd=3 --error-exitcode=119 --max-stackframe=8388608 --child-silent-after-fork=yes" + echo "enabling valgrind: $vg" + fi + # The host will kill qemu abruptly if guestfsd shuts down normally - guestfsd + $vg guestfsd
# Otherwise we try to clean up gracefully. For example, this ensures that a # core dump generated by the guest daemon will be written to disk.
ACK. Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490