mirror of https://gitee.com/openkylin/qemu.git
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: John Snow <jsnow@redhat.com> Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com> Reviewed-by: John Snow <jsnow@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
036d8cbffd
commit
8af224d66b
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue