[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 15/22] iotests: exclude killed processes from running
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 15/22] iotests: exclude killed processes from running under Valgrind |
Date: |
Thu, 12 Sep 2019 15:45:57 +0200 |
From: Andrey Shinkevich <address@hidden>
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: John Snow <address@hidden>
Signed-off-by: Andrey Shinkevich <address@hidden>
Reviewed-by: John Snow <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
tests/qemu-iotests/039 | 5 +++++
tests/qemu-iotests/061 | 2 ++
tests/qemu-iotests/137 | 1 +
tests/qemu-iotests/common.rc | 12 ++++++++++--
4 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/tests/qemu-iotests/039 b/tests/qemu-iotests/039
index 7c730d94a7..325da63a4c 100755
--- a/tests/qemu-iotests/039
+++ b/tests/qemu-iotests/039
@@ -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 \
diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061
index d7dbd7e2c7..4eac5b83bd 100755
--- a/tests/qemu-iotests/061
+++ b/tests/qemu-iotests/061
@@ -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
diff --git a/tests/qemu-iotests/137 b/tests/qemu-iotests/137
index 0c3d2a1cf0..089821da0c 100755
--- a/tests/qemu-iotests/137
+++ b/tests/qemu-iotests/137
@@ -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" \
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index f574d22ea5..51c57dbfe0 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -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
--
2.20.1
- [Qemu-block] [PULL 04/22] iotests: Test reverse sub-cluster qcow2 writes, (continued)
- [Qemu-block] [PULL 04/22] iotests: Test reverse sub-cluster qcow2 writes, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 05/22] pr-manager: Fix invalid g_free() crash bug, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 07/22] vpc: Return 0 from vpc_co_create() on success, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 06/22] file-posix: Fix has_write_zeroes after NO_FALLBACK, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 08/22] iotests: Add supported protocols to execute_test(), Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 10/22] iotests: Restrict nbd Python tests to nbd, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 09/22] iotests: Restrict file Python tests to file, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 11/22] iotests: Test blockdev-create for vpc, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 12/22] iotests: skip 232 when run tests as root, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 13/22] block/nfs: add support for nfs_umount, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 15/22] iotests: exclude killed processes from running under Valgrind,
Kevin Wolf <=
- [Qemu-block] [PULL 16/22] iotests: Add casenotrun report to bash tests, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 14/22] iotests: allow Valgrind checking all QEMU processes, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 17/22] iotests: Valgrind fails with nonexistent directory, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 18/22] iotests: extended timeout under Valgrind, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 19/22] iotests: extend sleeping time under Valgrind, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 20/22] qemu-io: Don't leak pattern file in error path, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 22/22] qcow2: Stop overwriting compressed clusters one by one, Kevin Wolf, 2019/09/12
- [Qemu-block] [PULL 21/22] block/create: Do not abort if a block driver is not available, Kevin Wolf, 2019/09/12
- Re: [Qemu-block] [PULL 00/22] Block layer patches, Peter Maydell, 2019/09/13