From nobody Fri Nov 14 16:56:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1762279334; cv=none; d=zohomail.com; s=zohoarc; b=dS0x59pF8EcNZDWzwEtpklRTh0u/7fzWw2Jj7eOqzjbhDMXyK7BgeuYPFyh/E06j+jyv9XeUj2yUKDBvRNXkDl/4Nemv6mQOJnH5P7P2HUw8pVJPZrv4oECXM6la6pm07knb5qGWOv4MHRuX0SS5z3kJN1X5UZlA0Rz1OdyNYEE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762279334; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/JyZOAu8kJZG1l3piTbT+IR3lNXsnQ6tJXrxHnnA3CY=; b=j0xFk75XqPiWVqObjkV3IuMqiOiIDVb42yq4sThYrIqbrB/qvQnvaEQ1quaMKEhHq6tM9vh6ybdIz3j0rWsQEYufNqMb0KZKnNrkFbPQ43c0nwz9ksPUjYcsBRf+6fi1+72qJmXXOKb+nP4ICvXzR++Mf6ng4EAWF/FPj9RwbKE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1762279334079768.2466808350122; Tue, 4 Nov 2025 10:02:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vGLKw-0006jh-P9; Tue, 04 Nov 2025 13:00:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vGLFL-0001KO-5g for qemu-devel@nongnu.org; Tue, 04 Nov 2025 12:55:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vGLFI-00070X-LL for qemu-devel@nongnu.org; Tue, 04 Nov 2025 12:55:06 -0500 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-383-b1m9NJHSMhmM6S18MRXiyg-1; Tue, 04 Nov 2025 12:55:01 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7596C18002F9; Tue, 4 Nov 2025 17:55:00 +0000 (UTC) Received: from merkur.fritz.box (unknown [10.45.226.47]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 30170180044F; Tue, 4 Nov 2025 17:54:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762278903; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/JyZOAu8kJZG1l3piTbT+IR3lNXsnQ6tJXrxHnnA3CY=; b=O1ZvQ682A0hvpwfMZAS8ZiLIBclOviMZC8HVHP8W0F0nWL+1UGBLAjAQLzPR3uU2Zn4h9G yZrinqNLR9tUXH0US3yPfWD7t9+5z0zu/XHBAWPY0YhFLIB43sP1BmTzOF18UNCZ8bIEwb PnXmGTFWLFPtcfjw42KWhtkPH3MnK6g= X-MC-Unique: b1m9NJHSMhmM6S18MRXiyg-1 X-Mimecast-MFC-AGG-ID: b1m9NJHSMhmM6S18MRXiyg_1762278900 From: Kevin Wolf To: qemu-block@nongnu.org Cc: kwolf@redhat.com, qemu-devel@nongnu.org Subject: [PULL 20/27] iotests: Run iotests with sanitizers Date: Tue, 4 Nov 2025 18:54:08 +0100 Message-ID: <20251104175415.525388-21-kwolf@redhat.com> In-Reply-To: <20251104175415.525388-1-kwolf@redhat.com> References: <20251104175415.525388-1-kwolf@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.788, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1762279335949158500 From: Akihiko Odaki 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. Signed-off-by: Akihiko Odaki Message-ID: <20251023-iotests-v1-2-fab143ca4c2f@rsg.ci.i.u-tokyo.ac.jp> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf --- tests/qemu-iotests/testrunner.py | 12 ++++++++++++ tests/qemu-iotests/meson.build | 8 -------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tests/qemu-iotests/testrunner.py b/tests/qemu-iotests/testrunn= er.py index 14cc8492f9..e2a3658994 100644 --- a/tests/qemu-iotests/testrunner.py +++ b/tests/qemu-iotests/testrunner.py @@ -263,10 +263,21 @@ def do_run_test(self, test: str) -> TestResult: Path(env[d]).mkdir(parents=3DTrue, exist_ok=3DTrue) =20 test_dir =3D env['TEST_DIR'] + f_asan =3D Path(test_dir, f_test.name + '.out.asan') f_bad =3D Path(test_dir, f_test.name + '.out.bad') f_notrun =3D Path(test_dir, f_test.name + '.notrun') f_casenotrun =3D Path(test_dir, f_test.name + '.casenotrun') =20 + env['ASAN_OPTIONS'] =3D f'detect_leaks=3D0:log_path=3D{f_asan}' + + def unlink_asan(): + with os.scandir(test_dir) as it: + for entry in it: + if entry.name.startswith(f_asan.name): + os.unlink(entry) + + unlink_asan() + for p in (f_notrun, f_casenotrun): silent_unlink(p) =20 @@ -312,6 +323,7 @@ def do_run_test(self, test: str) -> TestResult: description=3Df'output mismatch (see {f_bad}= )', diff=3Ddiff, casenotrun=3Dcasenotrun) else: + unlink_asan() f_bad.unlink() return TestResult(status=3D'pass', elapsed=3Delapsed, casenotrun=3Dcasenotrun) diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index fad340ad59..56b0446827 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -2,14 +2,6 @@ if not have_tools or host_os =3D=3D 'windows' subdir_done() endif =20 -foreach cflag: qemu_ldflags - if cflag.startswith('-fsanitize') and \ - not cflag.contains('safe-stack') and not cflag.contains('cfi-icall') - message('Sanitizers are enabled =3D=3D> Disabled the qemu-iotests.') - subdir_done() - endif -endforeach - bash =3D find_program('bash', required: false, version: '>=3D 4.0') if not bash.found() message('bash >=3D v4.0 not available =3D=3D> Disabled the qemu-iotests.= ') --=20 2.51.1