Commit 8af224d6 authored by Andrey Shinkevich's avatar Andrey Shinkevich Committed by Kevin Wolf
Browse files

iotests: exclude killed processes from running under Valgrind

 The Valgrind tool fails to manage its termination in multi-threaded
 processes when they raise the signal SIGKILL. The bug has been reported
 to the Valgrind maintainers and was registered as the bug #409141:
 https://bugs.kde.org/show_bug.cgi?id=409141


 Let's exclude such test cases from running under the Valgrind until a
 new version with the bug fix is released because checking for the
 memory issues is covered by other test cases.

Suggested-by: default avatarJohn Snow <jsnow@redhat.com>
Signed-off-by: default avatarAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Reviewed-by: default avatarJohn Snow <jsnow@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 036d8cbf
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ echo "== Creating a dirty image file =="
IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

_NO_VALGRIND \
$QEMU_IO -c "write -P 0x5a 0 512" \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io
@@ -100,6 +101,7 @@ echo "== Opening a dirty image read/write should repair it =="
IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

_NO_VALGRIND \
$QEMU_IO -c "write -P 0x5a 0 512" \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io
@@ -118,6 +120,7 @@ echo "== Creating an image file with lazy_refcounts=off =="
IMGOPTS="compat=1.1,lazy_refcounts=off"
_make_test_img $size

_NO_VALGRIND \
$QEMU_IO -c "write -P 0x5a 0 512" \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io
@@ -151,6 +154,7 @@ echo "== Changing lazy_refcounts setting at runtime =="
IMGOPTS="compat=1.1,lazy_refcounts=off"
_make_test_img $size

_NO_VALGRIND \
$QEMU_IO -c "reopen -o lazy-refcounts=on" \
         -c "write -P 0x5a 0 512" \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
@@ -163,6 +167,7 @@ _check_test_img
IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

_NO_VALGRIND \
$QEMU_IO -c "reopen -o lazy-refcounts=off" \
         -c "write -P 0x5a 0 512" \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
+2 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ echo
echo "=== Testing dirty version downgrade ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
_NO_VALGRIND \
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 | _filter_qemu_io
$PYTHON qcow2.py "$TEST_IMG" dump-header
@@ -107,6 +108,7 @@ echo
echo "=== Testing dirty lazy_refcounts=off ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
_NO_VALGRIND \
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush \
         -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 | _filter_qemu_io
$PYTHON qcow2.py "$TEST_IMG" dump-header
+1 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ echo

# Whether lazy-refcounts was actually enabled can easily be tested: Check if
# the dirty bit is set after a crash
_NO_VALGRIND \
$QEMU_IO \
    -c "reopen -o lazy-refcounts=on,overlap-check=blubb" \
    -c "write -P 0x5a 0 512" \
+10 −2
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ _qemu_proc_exec()
{
    local VALGRIND_LOGFILE="$1"
    shift
    if [ "${VALGRIND_QEMU}" == "y" ]; then
    if [[ "${VALGRIND_QEMU}" == "y" && "${NO_VALGRIND}" != "y" ]]; then
        exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 "$@"
    else
        exec "$@"
@@ -89,7 +89,7 @@ _qemu_proc_valgrind_log()
{
    local VALGRIND_LOGFILE="$1"
    local RETVAL="$2"
    if [ "${VALGRIND_QEMU}" == "y" ]; then
    if [[ "${VALGRIND_QEMU}" == "y" && "${NO_VALGRIND}" != "y" ]]; then
        if [ $RETVAL == 99 ]; then
            cat "${VALGRIND_LOGFILE}"
        fi
@@ -169,6 +169,14 @@ _qemu_vxhs_wrapper()
    return $RETVAL
}

# Valgrind bug #409141 https://bugs.kde.org/show_bug.cgi?id=409141
# Until valgrind 3.16+ is ubiquitous, we must work around a hang in
# valgrind when issuing sigkill. Disable valgrind for this invocation.
_NO_VALGRIND()
{
    NO_VALGRIND="y" "$@"
}

export QEMU=_qemu_wrapper
export QEMU_IMG=_qemu_img_wrapper
export QEMU_IO=_qemu_io_wrapper