Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp1842000lqe; Tue, 9 Apr 2024 01:49:04 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWQProqahsPh1xmEs3ZtPMAMaQC++mdPOffMVTZ6FrvXmTukmstqYVDXacg7RBra3kcbppqhzX5roaODRITtAggjxENEf7z0t5GDmvteg== X-Google-Smtp-Source: AGHT+IE+vKMCNrtoOpaPdfDkBTdIFw7p0tIsRghiWM4YjVINdg5PhqF9QjiuCoLC5oPdstlxhwZ0 X-Received: by 2002:a9d:6d94:0:b0:6ea:1035:1061 with SMTP id x20-20020a9d6d94000000b006ea10351061mr7490865otp.17.1712652544462; Tue, 09 Apr 2024 01:49:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712652544; cv=pass; d=google.com; s=arc-20160816; b=j6xM+60Uw0me5YlEZRf4az0NdeSv3SGETYJQH61Y5qvhyXvh4Dt2b+gQ4WAf/3RF1R q0EGErMx34EkaHgVdaq+nrqxqb5WuYHH8rOUTcUhhrXgx5VyhXXbcougVfrNNFxL07Pl GVNCwD4lRxmOLO8KztUaFbALb3Hg2NSSqqJ9VRWXWAD5QezdoY0nTFUufzQ62vNAPSxu d6+rWFSf9J7gtuW3dowTbHjfAbPH0MysXVwA6WqxiVhtdIcFkVtXJzTB7d0SrfN/TmRY AzRztr008ev2lyZrlkBc9gOBq4gAhqICj1tMIKKWPSYoo+Zegdg3aw5/PYKiXuRgKpxW m6rQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=2B+Gt/KAr8t7f+jbMGjB13Te+/LBSkRQRyRMTlg82cE=; fh=dx6kmKVervQQe8k8IK7jAwFRmaKAtq53/ovthr0lh8Y=; b=YSbPm2OS1npaxELkMq9b8gXnoGDWSW/6ocwHoKZo6yCGaetM6z+PvbCHKKdUWb6ZZ7 wHW+wNqREUIWsV6IWLyVM5Mk5mAUcrhCxOSm6BBIOgNw8qDE5STyBPucTuB9uStLgfSY HQkK3o6kDksLr0X6P/4B24rCdiU2swDDqDQx3BrXTNS4+wczMT6B6l3PIRrVA15jtxhM RBLUIZQ+FLpteifVQarEiuw7KIwGow1Be/6bYeqYLtE9kj3HD2zN0zIpo5ugAXUhNnjJ c/qE0CvRiMHKrgOGh4QqH1xj6DJO1sD/MZ4jGN8rD6XzqIeOu9wyn4b2h7CHcDca4tSg u2Rg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-136502-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136502-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id t12-20020a63f34c000000b0057d7cff25besi8313944pgj.829.2024.04.09.01.49.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 01:49:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-136502-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-136502-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136502-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 271CCB21B29 for ; Tue, 9 Apr 2024 08:48:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DF4977F7C6; Tue, 9 Apr 2024 08:48:13 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D38DD7E77B; Tue, 9 Apr 2024 08:48:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712652493; cv=none; b=VCNLKQY+dmAMj6P3g9auLbsVZxIr4eHBaKNthInmrjeEG4lUrEVV0TkJarRliETL47x2dwsqsIZst9gTCOxIUhBUKkFYbVPlkDD//CPjFkWzICsI0HbT131dMN7lsm5yL5942oMhkv7cL717qq4VG7uhI8iK7KpK80WYw9xHM6M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712652493; c=relaxed/simple; bh=ypMirJBQln4cahP5+iyf5ns4VS6WkKkpnbUKpCIXRMM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MOQilDrE4205mzrevI5M6Nv/7ll5FtTW76F2UXbn9eWIjm8X/tyF2ybQc5ASDLevKs+M1c46Oxz+3+uYD3rHcCVGw4sl9rvWHgFYm0K0UPiXsOclC+IEO/hLk+e/2SNN4fzHiMpYIc99+NX+jd93SO9NseQFHU/Z7IMGSCK7upY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9DD8D12FC; Tue, 9 Apr 2024 01:48:41 -0700 (PDT) Received: from e127643.broadband (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2201C3F6C4; Tue, 9 Apr 2024 01:48:09 -0700 (PDT) From: James Clark To: linux-perf-users@vger.kernel.org, irogers@google.com Cc: James Clark , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , "Liang, Kan" , Athira Rajeev , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH 2/3] perf map: Remove kernel map before updating start and end addresses Date: Tue, 9 Apr 2024 09:47:38 +0100 Message-Id: <20240409084741.405433-3-james.clark@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240409084741.405433-1-james.clark@arm.com> References: <20240409084741.405433-1-james.clark@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit In a debug build there is validation that mmap lists are sorted when taking a lock. In machine__update_kernel_mmap() the start and end addresses are updated resulting in an unsorted list before the map is removed from the list. When the map is removed, the lock is taken which triggers the validation and the failure: $ perf test "object code reading" --- start --- perf: util/maps.c:88: check_invariants: Assertion `map__start(prev) <= map__start(map)' failed. Aborted Fix it by updating the addresses after removal, but before insertion. The bug depends on the ordering and type of debug info on the system and doesn't reproduce everywhere. Fixes: 659ad3492b91 ("perf maps: Switch from rbtree to lazily sorted array for addresses") Signed-off-by: James Clark --- tools/perf/util/machine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 5eb9044bc223..a26c8bea58d0 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -1549,8 +1549,8 @@ static int machine__update_kernel_mmap(struct machine *machine, updated = map__get(orig); machine->vmlinux_map = updated; - machine__set_kernel_mmap(machine, start, end); maps__remove(machine__kernel_maps(machine), orig); + machine__set_kernel_mmap(machine, start, end); err = maps__insert(machine__kernel_maps(machine), updated); map__put(orig); -- 2.34.1