From nobody Tue Nov 18 10:40:47 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; arc=pass (i=1dmarc=pass fromdomain=outlook.com); dmarc=pass(p=none dis=none) header.from=outlook.com ARC-Seal: i=2; a=rsa-sha256; t=1610076017; cv=pass; d=zohomail.com; s=zohoarc; b=a+oxOlVMxVVVNQMmcM4lsC1Rqm2S9L1omW50r2ea79/kr7vRmjpBB4L9ONn5F10gTa9t0pR9jr8gi2ZsKCu9PkXA93i1TKTBTSJoX2luVZl7c2/F2gBnliCrnmxf+pQ3kTfV5ywTQ/ABhe8O5fOVOb3dRL+3hDREv/xRzPjaNzI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610076017; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7XTiontcXcl/sXd8NsJSPTBEjBlvNG9gWFbSN0ODnC4=; b=SCHGOQRVidK8HQsiC7DsL8JVBnYc9hJCj8LzCFv28y7x7UaTZnS5NCpVeEZVcoVXLKUwz9rYyjuzQWg9ICRnjTq0pK9oIZQ8cirkI9FNagtDWN7DBvyom3qdzAU2WxH9gI7domhdBQhExjJDE3yTDN21+odAW7dHcBM+tb0bxCU= ARC-Authentication-Results: i=2; 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; arc=pass (i=1dmarc=pass fromdomain=outlook.com); dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610076017214100.90168682388014; Thu, 7 Jan 2021 19:20:17 -0800 (PST) Received: from localhost ([::1]:52164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxiK0-0001Ux-2Z for importer@patchew.org; Thu, 07 Jan 2021 22:20:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39066) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxiIP-00007F-Td for qemu-devel@nongnu.org; Thu, 07 Jan 2021 22:18:38 -0500 Received: from mail-oln040092254066.outbound.protection.outlook.com ([40.92.254.66]:34240 helo=APC01-PU1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxiIK-0006pt-GT for qemu-devel@nongnu.org; Thu, 07 Jan 2021 22:18:37 -0500 Received: from PU1APC01FT020.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::49) by PU1APC01HT044.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::390) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 03:18:20 +0000 Received: from MEAPR01MB3494.ausprd01.prod.outlook.com (10.152.252.54) by PU1APC01FT020.mail.protection.outlook.com (10.152.252.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 03:18:20 +0000 Received: from MEAPR01MB3494.ausprd01.prod.outlook.com ([fe80::2d4d:a683:7f83:cf50]) by MEAPR01MB3494.ausprd01.prod.outlook.com ([fe80::2d4d:a683:7f83:cf50%7]) with mapi id 15.20.3742.006; Fri, 8 Jan 2021 03:18:20 +0000 Received: from XPS-13-9360 (2001:250:fe01:130:40a3:2fc0:cdf4:4729) by HK2PR0401CA0020.apcprd04.prod.outlook.com (2603:1096:202:2::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 03:18:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iNpUlV1EMAVZh4ru/W6ngaZObh56nLzLH9uOdlCqw7bhqpn5RPLixPp6APrei/4fDSfQPk/iiZeT5Bp3CqeEeq7t7VUGtc17vuRfDnSd+sh3Mt5yEO7qHORZbxCZ/dbSGXCcxqrCUS1LQ053zTg5FR1ck49bdBDFsFVYaTzwxAc/DcwBOf6Hx5ixHSOqi2nNSI2/k/rG0auuLyYRl7pBZ0r7caSfr/0u/GKCQZQph7i9AQVGIO8GdW8N/cSt0POU3rXxkvtlmoIm0A0ak1OjRPDFA4EVOR9izueGyR8ZmUX3MuDlO2j6r6VDfKzlibLDwft1iY5P9dBPPtKWya7G6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7XTiontcXcl/sXd8NsJSPTBEjBlvNG9gWFbSN0ODnC4=; b=MQZW6E+QhTseJz8Zh0rOOV0II/pFbNn2R1kIam2f0Gjkhhtw4K9he2iymIdcwk5nt/JLko71miyw+9dXSy40cfehx9pYPO6s7eCs5Yku8tGhBAf7OSrVmMJSH9yYW33UH01sjHFvyUmW+TNJ2GCn4o92IwmOdc01PZ/1H4HVROyVM+Pi1fx0ekthd8qfT6f7iv+H40AnHVlwl4XI5SQLHoGmdC0GNMYuNFul/BNhFRapnZFx1MmbOKkRWtpkwL0U2d8iysbP4MF+U5UCQ9Mdz3EqHlA5VTKcpzKmyn78k3H024sV9kUIjvnh0fA6hBAz0TAxTNHNlrd/xX7+YMbUgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7XTiontcXcl/sXd8NsJSPTBEjBlvNG9gWFbSN0ODnC4=; b=rzePrAbe9zXprcFqTE3aF2n/4mCYz/GOivlt04up6qFMUqnCrbBaRQMKCZ3ZzHEf8t27tHwd9CjA+LeTulW7y0pTzBeB/EohY5ZncNREALGFAYNCRhGLo3rcJo9SzzzfB1fBkSkjIpK8lpP41sRX2KjCcBw2zLLTz/Qhdpsgb1MhcGBf1ob5plUEZq5BIRNVlkYG50dE1UVhGYoEZJNmKgDbXZtwVEXaJM2EbNK3xfFpYWg+CQNPeZMMD07ahh7X/St+bOSBSxvbnWkilMFCpZfwapv0NHD3gOAlkjtCAz3T3qBjsPgFslUqrws9RIHFUtrUBmkGMiPF9ODXSagSrQ== X-IncomingTopHeaderMarker: OriginalChecksum:8BE70C2AE17927D1AC72ACD4AB5BF71EB203EFFBCC8C9922697FEF8A2D5DFEEF; UpperCasedChecksum:B966827DAC738978C36DAAA1E17BA6F1CB82A44613965FFBCDBF0C0E2D788E9E; SizeAsReceived:7670; Count:47 From: Qiuhao Li To: alxndr@bu.edu, qemu-devel@nongnu.org Subject: [PATCH v5 7/7] fuzz: heuristic split write based on past IOs Date: Fri, 8 Jan 2021 11:12:49 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-TMN: [fAjHALQQsT0TtC/Iw8VSJH6gDAaykidXXN0aDI9b5yZkhKaahyFe3cPzazFXHQy5] X-ClientProxiedBy: HK2PR0401CA0020.apcprd04.prod.outlook.com (2603:1096:202:2::30) To MEAPR01MB3494.ausprd01.prod.outlook.com (2603:10c6:201:39::11) X-Microsoft-Original-Message-ID: <20210108031249.68381-7-Qiuhao.Li@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 12510e80-15c4-4b09-71d2-08d8b3840c8e X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiT4Pkfzu6B+gslsbaS+QpFwhVEmwSfFHOHzogkw7n/eb6NP0bIyotz4Rl1rPUY0qmZtwy49kHYPIytVOiy4Z88Fd1jh79EoF4Xp2L4WFuQFLlW4+NUr/x1W31kEDRxIEY6+1zPvTl+/DN0PBoLZ+AAwxOE9kAiOxzbDXU2d4GKVPgvlF6dYzpRinvMG4SnTzcuMY6HHuTWY5xt1Yx4EYTNH2xwTwiFGMB0948FHgNd8SoBMhqy6vPyn75QJ3we/9BQs1gLbd9lk70DGJwuS7A8Nd5pVDmYHvj7CYaz2lgjTxBbUgrFg6AW+6YuwfMu0SbqVX1J0W5za5yWDhi7UbK5oUAiGjDXmgMU9RQyDfcDvDoFqjwLJRn6Sn/n99vMIBvT1h2Kcx/FcdccuIxY9Zc0pmFrHUXCTFeWmhbrc6pxTrQcssQi3NqmfOoFnyZil3NSSMQHPj2CtKtN2mfG5cF80ZIfnXrUmUesfskeph1LplEQNWodeZGFi9RHI4DuQztXTpsABwp4rkwsNw9cUw2XIhmFs0BRbuIXN0lFYoXhTM1igufcMLramj871zjZd/H7Dl0gCCqmXds7MHzVVqPSvDIB1pGiD8Nf/zZEs4rygPg/e7IsZEBOe5F8W4NvvH18RpkGrKrmTIo7aXo339eFxbKRicpfGUc6VBUmtUvovzZ5JWkliksKYSGaBImxwyXT0kDjtdZjzM18epNQcuioVAU1fG9S2CGQCDlO+I54WIfKfm2sA7yKyGZCet8lyGPU= X-MS-TrafficTypeDiagnostic: PU1APC01HT044: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +n9oawzMQ9lKg6SGkEvAwKbDw4XU/a0yH6ShBufSZFtNSI4r5cCwG98URPNsHJOpXIC97CovGyt1Yo0TZWAyhnrSIgRG7D+MCCpF3tFuLGEtcOg7kWwvFHxTQAbH8CnXJlKq5fgUrWoI1ZQirktcv5oUF7QaD2w2N78OiVPUSv23eBcxcB8S5OH8cIQZjOz3z8w3ICnrAZDvj8bFv9ErfLR6iu7N4/xdeIos5qHlFw5LHt/Fv39r64T+8dGdKbQr X-MS-Exchange-AntiSpam-MessageData: MUKIAM3WKSfcCQV5IyyPKIDVYalb5XoCgjBHUa0mWvQEGYQqM9FqTCXRcz2vsiSWa81JHm6hVJBGFAAmTKsusjlhSJn9tB6KTEJUSHdlI+aRhkxsBTQcLn2nQAmVF/T4tilTNe1iuZqsFAlGKCHY5OYjwESOzmVwG2NrmyphttU60nM0WHuqGFxwVM7NiLsw0YvYmLoMMIRkuDpNdfDglw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2021 03:18:20.0082 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-Network-Message-Id: 12510e80-15c4-4b09-71d2-08d8b3840c8e X-MS-Exchange-CrossTenant-AuthSource: PU1APC01FT020.eop-APC01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PU1APC01HT044 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=40.92.254.66; envelope-from=Qiuhao.Li@outlook.com; helo=APC01-PU1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Qiuhao Li , darren.kenny@oracle.com, bsd@redhat.com, stefanha@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @outlook.com) Content-Type: text/plain; charset="utf-8" If previous write commands write the same length of data with the same step, we view it as a hint. Signed-off-by: Qiuhao Li --- scripts/oss-fuzz/minimize_qtest_trace.py | 56 ++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/scripts/oss-fuzz/minimize_qtest_trace.py b/scripts/oss-fuzz/mi= nimize_qtest_trace.py index 8661116075..408ae2ac67 100755 --- a/scripts/oss-fuzz/minimize_qtest_trace.py +++ b/scripts/oss-fuzz/minimize_qtest_trace.py @@ -85,6 +85,43 @@ def check_if_trace_crashes(trace, path): return False =20 =20 +# If previous write commands write the same length of data at the same +# interval, we view it as a hint. +def split_write_hint(newtrace, i): + HINT_LEN =3D 3 # > 2 + if i <=3D(HINT_LEN-1): + return None + + #find previous continuous write traces + k =3D 0 + l =3D i-1 + writes =3D [] + while (k !=3D HINT_LEN and l >=3D 0): + if newtrace[l].startswith("write "): + writes.append(newtrace[l]) + k +=3D 1 + l -=3D 1 + elif newtrace[l] =3D=3D "": + l -=3D 1 + else: + return None + if k !=3D HINT_LEN: + return None + + length =3D int(writes[0].split()[2], 16) + for j in range(1, HINT_LEN): + if length !=3D int(writes[j].split()[2], 16): + return None + + step =3D int(writes[0].split()[1], 16) - int(writes[1].split()[1], 16) + for j in range(1, HINT_LEN-1): + if step !=3D int(writes[j].split()[1], 16) - \ + int(writes[j+1].split()[1], 16): + return None + + return (int(writes[0].split()[1], 16)+step, length) + + def remove_lines(newtrace, outpath): remove_step =3D 1 i =3D 0 @@ -148,6 +185,25 @@ def remove_lines(newtrace, outpath): length =3D int(newtrace[i].split()[2], 16) data =3D newtrace[i].split()[3][2:] if length > 1: + + # Can we get a hint from previous writes? + hint =3D split_write_hint(newtrace, i) + if hint is not None: + hint_addr =3D hint[0] + hint_len =3D hint[1] + if hint_addr >=3D addr and hint_addr+hint_len <=3D add= r+length: + newtrace[i] =3D "write {addr} {size} 0x{data}\n".f= ormat( + addr=3Dhex(hint_addr), + size=3Dhex(hint_len), + data=3Ddata[(hint_addr-addr)*2:\ + (hint_addr-addr)*2+hint_len*2]) + if check_if_trace_crashes(newtrace, outpath): + # next round + i +=3D 1 + continue + newtrace[i] =3D prior[0] + + # Try splitting it using a binary approach leftlength =3D int(length/2) rightlength =3D length - leftlength newtrace.insert(i+1, "") --=20 2.25.1