mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-27 20:13:08 -06:00
qemu-iotests: fix -valgrind option for check
Commit 934659c
switched the iotests to run qemu-io from a bash subshell,
in order to catch segfaults. This method is incompatible with the
current valgrind_qemu_io() bash function.
Move the valgrind usage into the exec subshell in _qemu_io_wrapper(),
while making sure the original return value is passed back to the
caller.
Update test output for tests 039, 061, and 137 as it looks for the
specific subshell command when the process is terminated.
Reported-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
Message-id: 0066fd85d26ca641a1c25135ff2479b7985701cf.1446232490.git.jcody@redhat.com
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
f6c8c2e055
commit
e6c17669eb
6 changed files with 59 additions and 26 deletions
|
@ -11,7 +11,11 @@ No errors were found on the image.
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x1
|
incompatible_features 0x1
|
||||||
ERROR cluster 5 refcount=0 reference=1
|
ERROR cluster 5 refcount=0 reference=1
|
||||||
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
|
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
|
||||||
|
@ -46,7 +50,11 @@ read 512/512 bytes at offset 0
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x1
|
incompatible_features 0x1
|
||||||
ERROR cluster 5 refcount=0 reference=1
|
ERROR cluster 5 refcount=0 reference=1
|
||||||
Rebuilding refcount structure
|
Rebuilding refcount structure
|
||||||
|
@ -60,7 +68,11 @@ incompatible_features 0x0
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x0
|
incompatible_features 0x0
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
|
|
||||||
|
@ -79,7 +91,11 @@ No errors were found on the image.
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x1
|
incompatible_features 0x1
|
||||||
ERROR cluster 5 refcount=0 reference=1
|
ERROR cluster 5 refcount=0 reference=1
|
||||||
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
|
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
|
||||||
|
@ -89,7 +105,11 @@ Data may be corrupted, or further writes to the image may corrupt it.
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x0
|
incompatible_features 0x0
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
*** done
|
*** done
|
||||||
|
|
|
@ -57,7 +57,11 @@ No errors were found on the image.
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||||
wrote 131072/131072 bytes at offset 0
|
wrote 131072/131072 bytes at offset 0
|
||||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
magic 0x514649fb
|
magic 0x514649fb
|
||||||
version 3
|
version 3
|
||||||
backing_file_offset 0x0
|
backing_file_offset 0x0
|
||||||
|
@ -215,7 +219,11 @@ No errors were found on the image.
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||||
wrote 131072/131072 bytes at offset 0
|
wrote 131072/131072 bytes at offset 0
|
||||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
magic 0x514649fb
|
magic 0x514649fb
|
||||||
version 3
|
version 3
|
||||||
backing_file_offset 0x0
|
backing_file_offset 0x0
|
||||||
|
|
|
@ -31,7 +31,11 @@ Cache clean interval too big
|
||||||
Unsupported value 'blubb' for qcow2 option 'overlap-check'. Allowed are any of the following: none, constant, cached, all
|
Unsupported value 'blubb' for qcow2 option 'overlap-check'. Allowed are any of the following: none, constant, cached, all
|
||||||
wrote 512/512 bytes at offset 0
|
wrote 512/512 bytes at offset 0
|
||||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
./common.config: Killed ( exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@" )
|
./common.config: Killed ( if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@";
|
||||||
|
fi )
|
||||||
incompatible_features 0x0
|
incompatible_features 0x0
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||||
wrote 65536/65536 bytes at offset 0
|
wrote 65536/65536 bytes at offset 0
|
||||||
|
|
|
@ -41,7 +41,6 @@ sortme=false
|
||||||
expunge=true
|
expunge=true
|
||||||
have_test_arg=false
|
have_test_arg=false
|
||||||
randomize=false
|
randomize=false
|
||||||
valgrind=false
|
|
||||||
cachemode=false
|
cachemode=false
|
||||||
rm -f $tmp.list $tmp.tmp $tmp.sed
|
rm -f $tmp.list $tmp.tmp $tmp.sed
|
||||||
|
|
||||||
|
@ -53,6 +52,7 @@ export CACHEMODE="writeback"
|
||||||
export QEMU_IO_OPTIONS=""
|
export QEMU_IO_OPTIONS=""
|
||||||
export CACHEMODE_IS_DEFAULT=true
|
export CACHEMODE_IS_DEFAULT=true
|
||||||
export QEMU_OPTIONS="-nodefaults"
|
export QEMU_OPTIONS="-nodefaults"
|
||||||
|
export VALGRIND_QEMU=
|
||||||
|
|
||||||
for r
|
for r
|
||||||
do
|
do
|
||||||
|
@ -278,7 +278,7 @@ testlist options
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-valgrind)
|
-valgrind)
|
||||||
valgrind=true
|
VALGRIND_QEMU='y'
|
||||||
xpand=false
|
xpand=false
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -436,8 +436,3 @@ fi
|
||||||
if [ "$IMGPROTO" = "nbd" ] ; then
|
if [ "$IMGPROTO" = "nbd" ] ; then
|
||||||
[ "$QEMU_NBD" = "" ] && _fatal "qemu-nbd not found"
|
[ "$QEMU_NBD" = "" ] && _fatal "qemu-nbd not found"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if $valgrind; then
|
|
||||||
export REAL_QEMU_IO="$QEMU_IO_PROG"
|
|
||||||
export QEMU_IO_PROG=valgrind_qemu_io
|
|
||||||
fi
|
|
||||||
|
|
|
@ -122,7 +122,23 @@ _qemu_img_wrapper()
|
||||||
|
|
||||||
_qemu_io_wrapper()
|
_qemu_io_wrapper()
|
||||||
{
|
{
|
||||||
(exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@")
|
local VALGRIND_LOGFILE=/tmp/$$.valgrind
|
||||||
|
local RETVAL
|
||||||
|
(
|
||||||
|
if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@"
|
||||||
|
else
|
||||||
|
exec "$QEMU_IO_PROG" $QEMU_IO_OPTIONS "$@"
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
RETVAL=$?
|
||||||
|
if [ "${VALGRIND_QEMU}" == "y" ]; then
|
||||||
|
if [ $RETVAL == 99 ]; then
|
||||||
|
cat "${VALGRIND_LOGFILE}"
|
||||||
|
fi
|
||||||
|
rm -f "${VALGRIND_LOGFILE}"
|
||||||
|
fi
|
||||||
|
(exit $RETVAL)
|
||||||
}
|
}
|
||||||
|
|
||||||
_qemu_nbd_wrapper()
|
_qemu_nbd_wrapper()
|
||||||
|
|
|
@ -70,16 +70,6 @@ else
|
||||||
TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
|
TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function valgrind_qemu_io()
|
|
||||||
{
|
|
||||||
valgrind --log-file=/tmp/$$.valgrind --error-exitcode=99 $REAL_QEMU_IO "$@"
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
cat /tmp/$$.valgrind
|
|
||||||
fi
|
|
||||||
rm -f /tmp/$$.valgrind
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
_optstr_add()
|
_optstr_add()
|
||||||
{
|
{
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue