[PATCH 0/2] iotests: Run iotests with sanitizers

Akihiko Odaki posted 2 patches 3 weeks, 1 day ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20251023-iotests-v1-0-fab143ca4c2f@rsg.ci.i.u-tokyo.ac.jp
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
qemu-img.c                       |  2 +-
tests/qemu-iotests/meson.build   |  8 --------
tests/qemu-iotests/testrunner.py | 12 ++++++++++++
3 files changed, 13 insertions(+), 9 deletions(-)
[PATCH 0/2] iotests: Run iotests with sanitizers
Posted by Akihiko Odaki 3 weeks, 1 day ago
Commit 2cc4d1c5eab1 ("tests/check-block: Skip iotests when sanitizers
are enabled") changed iotests to skip when sanitizers are enabled.
The rationale is that AddressSanitizer emits warnings and reports leaks,
which results in test breakage. Later, sanitizers that are enabled for
production environments (safe-stack and cfi-icall) were exempted.

However, this approach has a few problems.

- It requires rebuild to disable sanitizers if the existing build has
  them enabled.
- It disables other useful non-production sanitizers.
- The exemption of safe-stack and cfi-icall is not correctly
  implemented, so qemu-iotests are incorrectly enabled whenever either
  safe-stack or cfi-icall is enabled *and*, even if there is another
  sanitizer like AddressSanitizer.

To solve these problems, direct AddressSanitizer warnings to separate
files to avoid changing the test results, and selectively disable
leak detection at runtime instead of requiring to disable all
sanitizers at buildtime.

Enabling AddressSanitizer actually revealed a use-after-free so a patch
to fix it is placed before one that enables iotests with sanitizers.

Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
---
Akihiko Odaki (2):
      qemu-img: Fix amend option parse error handling
      iotests: Run iotests with sanitizers

 qemu-img.c                       |  2 +-
 tests/qemu-iotests/meson.build   |  8 --------
 tests/qemu-iotests/testrunner.py | 12 ++++++++++++
 3 files changed, 13 insertions(+), 9 deletions(-)
---
base-commit: c85ba2d7a4056595166689890285105579db446a
change-id: 20251023-iotests-8697350cf968

Best regards,
--  
Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Re: [PATCH 0/2] iotests: Run iotests with sanitizers
Posted by Kevin Wolf 1 week, 3 days ago
Am 23.10.2025 um 10:10 hat Akihiko Odaki geschrieben:
> Commit 2cc4d1c5eab1 ("tests/check-block: Skip iotests when sanitizers
> are enabled") changed iotests to skip when sanitizers are enabled.
> The rationale is that AddressSanitizer emits warnings and reports leaks,
> which results in test breakage. Later, sanitizers that are enabled for
> production environments (safe-stack and cfi-icall) were exempted.
> 
> However, this approach has a few problems.
> 
> - It requires rebuild to disable sanitizers if the existing build has
>   them enabled.
> - It disables other useful non-production sanitizers.
> - The exemption of safe-stack and cfi-icall is not correctly
>   implemented, so qemu-iotests are incorrectly enabled whenever either
>   safe-stack or cfi-icall is enabled *and*, even if there is another
>   sanitizer like AddressSanitizer.
> 
> To solve these problems, direct AddressSanitizer warnings to separate
> files to avoid changing the test results, and selectively disable
> leak detection at runtime instead of requiring to disable all
> sanitizers at buildtime.
> 
> Enabling AddressSanitizer actually revealed a use-after-free so a patch
> to fix it is placed before one that enables iotests with sanitizers.
> 
> Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>

Thanks, applied to the block branch.

Kevin