From patchwork Mon Jan 2 16:16:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 38155 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp4225481wrt; Mon, 2 Jan 2023 08:20:04 -0800 (PST) X-Google-Smtp-Source: AMrXdXuiaYnc/6oFC5mDcXwyVnI8rB5CIndrm9DIe8XJVlw/vpOmlrG2o7VjyheG4cJ+R96txXZl X-Received: by 2002:a17:90a:6e46:b0:218:c566:a55f with SMTP id s6-20020a17090a6e4600b00218c566a55fmr10452659pjm.1.1672676403951; Mon, 02 Jan 2023 08:20:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672676403; cv=none; d=google.com; s=arc-20160816; b=r6KBKiCd0t47DLhhNPOb6bOnnbL3B+DSNXBmXsKp/ndwJqEeNyDObMWrJsMO22FNB9 njIqPgydQvhDgEyM2TfdcLxBW0AFn7Ud9flGSVmQjMU0mOi/dUPIMEcFxW6Jln/WS7Gz LjdLDl7UkThv1Rakkl7/YtHWMA4fJ5+/zdDfiZsWflnIbRQgVNRKdCrat7phj3cMcaGH 2cFBkwowK+DmfYo6oHyGaKByaqIuykPO8yZ2bR6Fu7gqXG3ujwOK7SAMPjIPpeIu+CK1 FiWHophtHiCA5gu8fL0HeUe7BGVojfgZlagkfdV+oNQQG2GDXBupYo3HkUquKOjWYE+9 hikg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-disposition :mime-version:message-id:subject:cc:to:from:date:dkim-signature; bh=aqul3fnVEvdxJzjzz2GzmhSfA1M6HBJJK+Sz/sgoNhQ=; b=M2XUIgco0idpOe0Yup+b0n/07qY/zn1jDu5sOg1nMb/Vbqw+i6P7g+VqgvtPPeEB1A rYITr3r29h+ra3dRTtDUOIS8KJmJwH29YLZ0pT5QFBOghCoXl4XOYh/VnKnPaeqZqVdi DMI+WRNnsa2o4H9X5Fc9WJPw0NdA1khdmbSx3NUZ9I//Rz7J4EAgraQuj6gRSOFk8fxF SyuZkgLd/hq0hALsEvaut6aoHUiuERscUSLPyrgJN7xpuVZ4ceUQHZZjj8/cEztjqe9Y lsZPcuFWlpMbNYXndqdHB26aq7rnqkKstDZdj5yyScsnSmKsenMqrN6oM9m9gaEAtb90 IXSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BbDBibU9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ob9-20020a17090b390900b00226861affd7si1829135pjb.82.2023.01.02.08.19.51; Mon, 02 Jan 2023 08:20:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BbDBibU9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236660AbjABQRM (ORCPT + 99 others); Mon, 2 Jan 2023 11:17:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236622AbjABQQy (ORCPT ); Mon, 2 Jan 2023 11:16:54 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5351AE68; Mon, 2 Jan 2023 08:16:52 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 9CD77B80D85; Mon, 2 Jan 2023 16:16:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2BEC8C433D2; Mon, 2 Jan 2023 16:16:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672676210; bh=fLsGwxADOfpNVMEEgkG7geJ98HrY385l+MjA+VZHbNI=; h=Date:From:To:Cc:Subject:From; b=BbDBibU92AFaJ7mNA2Knkils1vKWf2nhn2dOBr8a/DYTv83bmYdSM6Y6tppIJwcma Y6FN+uu4t+c4nRbPkTCqo9hg2eFGsB6wsSPGQDdiOBd6OTnuH0hrcRq6nFQUl9qjgQ /l8TuZf4I0vyjpdiisahUWY8pmyzOHVrFVTX54tnY2aHfmCJ1Z0bW/dOOca5oEt0Mq 3UC0Tli3BJRkvnQKTkiR8CCXtTudeut0q274bpOnvbkoxWKGc5xJeR8VF/WaP4L69o y+23AF9XyWPn0HWGX12UXFlckRE2Yg9+XXw7imJ6QCv9wBAA1nmSKnSkmq4xJS19AQ EaW+THmGW98VA== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 92D3440468; Mon, 2 Jan 2023 13:16:47 -0300 (-03) Date: Mon, 2 Jan 2023 13:16:47 -0300 From: Arnaldo Carvalho de Melo To: Ian Rogers Cc: Adrian Hunter , Ian Rogers , Jiri Olsa , Namhyung Kim , Linux Kernel Mailing List , linux-perf-users@vger.kernel.org Subject: [PATCH 1/1] perf tools: Fix segfault when trying to process tracepoints in perf.data and not linked with libtraceevent Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1753928333183565873?= X-GMAIL-MSGID: =?utf-8?q?1753928333183565873?= When we have a perf.data file with tracepoints, such as: # perf evlist -f probe_perf:lzma_decompress_to_file # Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events # We end up segfaulting when using perf built with NO_LIBTRACEEVENT=1 by trying to find an evsel with a NULL 'event_name' variable: (gdb) run report --stdio -f Starting program: /root/bin/perf report --stdio -f Program received signal SIGSEGV, Segmentation fault. 0x000000000055219d in find_evsel (evlist=0xfda7b0, event_name=0x0) at util/sort.c:2830 warning: Source file is more recent than executable. 2830 if (event_name[0] == '%') { Missing separate debuginfos, use: dnf debuginfo-install bzip2-libs-1.0.8-11.fc36.x86_64 cyrus-sasl-lib-2.1.27-18.fc36.x86_64 elfutils-debuginfod-client-0.188-3.fc36.x86_64 elfutils-libelf-0.188-3.fc36.x86_64 elfutils-libs-0.188-3.fc36.x86_64 glibc-2.35-20.fc36.x86_64 keyutils-libs-1.6.1-4.fc36.x86_64 krb5-libs-1.19.2-12.fc36.x86_64 libbrotli-1.0.9-7.fc36.x86_64 libcap-2.48-4.fc36.x86_64 libcom_err-1.46.5-2.fc36.x86_64 libcurl-7.82.0-12.fc36.x86_64 libevent-2.1.12-6.fc36.x86_64 libgcc-12.2.1-4.fc36.x86_64 libidn2-2.3.4-1.fc36.x86_64 libnghttp2-1.51.0-1.fc36.x86_64 libpsl-0.21.1-5.fc36.x86_64 libselinux-3.3-4.fc36.x86_64 libssh-0.9.6-4.fc36.x86_64 libstdc++-12.2.1-4.fc36.x86_64 libunistring-1.0-1.fc36.x86_64 libunwind-1.6.2-2.fc36.x86_64 libxcrypt-4.4.33-4.fc36.x86_64 libzstd-1.5.2-2.fc36.x86_64 numactl-libs-2.0.14-5.fc36.x86_64 opencsd-1.2.0-1.fc36.x86_64 openldap-2.6.3-1.fc36.x86_64 openssl-libs-3.0.5-2.fc36.x86_64 slang-2.3.2-11.fc36.x86_64 xz-libs-5.2.5-9.fc36.x86_64 zlib-1.2.11-33.fc36.x86_64 (gdb) bt #0 0x000000000055219d in find_evsel (evlist=0xfda7b0, event_name=0x0) at util/sort.c:2830 #1 0x0000000000552416 in add_dynamic_entry (evlist=0xfda7b0, tok=0xffb6eb "trace", level=2) at util/sort.c:2976 #2 0x0000000000552d26 in sort_dimension__add (list=0xf93e00 , tok=0xffb6eb "trace", evlist=0xfda7b0, level=2) at util/sort.c:3193 #3 0x0000000000552e1c in setup_sort_list (list=0xf93e00 , str=0xffb6eb "trace", evlist=0xfda7b0) at util/sort.c:3227 #4 0x00000000005532fa in __setup_sorting (evlist=0xfda7b0) at util/sort.c:3381 #5 0x0000000000553cdc in setup_sorting (evlist=0xfda7b0) at util/sort.c:3608 #6 0x000000000042eb9f in cmd_report (argc=0, argv=0x7fffffffe470) at builtin-report.c:1596 #7 0x00000000004aee7e in run_builtin (p=0xf64ca0 , argc=3, argv=0x7fffffffe470) at perf.c:330 #8 0x00000000004af0f2 in handle_internal_command (argc=3, argv=0x7fffffffe470) at perf.c:384 #9 0x00000000004af241 in run_argv (argcp=0x7fffffffe29c, argv=0x7fffffffe290) at perf.c:428 #10 0x00000000004af5fc in main (argc=3, argv=0x7fffffffe470) at perf.c:562 (gdb) So check if we have tracepoint events in add_dynamic_entry() and bail out instead: # perf report --stdio -f This perf binary isn't linked with libtraceevent, can't process probe_perf:lzma_decompress_to_file Error: Unknown --sort key: `trace' # Fixes: 378ef0f5d9d7f465 ("perf build: Use libtraceevent from the system") Cc: Adrian Hunter Cc: Ian Rogers Cc: Jiri Olsa Cc: Namhyung Kim Link: http://lore.kernel.org/lkml/ Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/sort.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index e188f74698dd310a..37662cdec5eefd18 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -2971,6 +2971,18 @@ static int add_dynamic_entry(struct evlist *evlist, const char *tok, ret = add_all_matching_fields(evlist, field_name, raw_trace, level); goto out; } +#else + evlist__for_each_entry(evlist, evsel) { + if (evsel->core.attr.type == PERF_TYPE_TRACEPOINT) { + pr_err("%s %s", ret ? "," : "This perf binary isn't linked with libtraceevent, can't process", evsel__name(evsel)); + ret = -ENOTSUP; + } + } + + if (ret) { + pr_err("\n"); + goto out; + } #endif evsel = find_evsel(evlist, event_name);