Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp700843ybl; Fri, 23 Aug 2019 07:11:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqzVZZNhXykQha+RQWYsGiXoDn4tjbTfnC6D88rwOzvORkNmGQLpN0kYFgvdoItiTN7hlo8d X-Received: by 2002:a17:90a:23c8:: with SMTP id g66mr5461167pje.123.1566569503818; Fri, 23 Aug 2019 07:11:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566569503; cv=none; d=google.com; s=arc-20160816; b=Dla1vIAPwDwu7evpitHj50saPTgJhTRV2RaI5MCElBCsidgpBv9DjZbgM5js3juUTh KJo/2fBVwR1Cr2v6fbEdT/DDVsINrWE8Ty8Ztj9hVIa2fEgUzfy8j2f+M6j80XKyBZ/Y xbVIbQAOlzd4ARNj+SirjmfktDSzevKPsfEEJUhMEnQMb0mwjY+XNCNhnmt2RhLAG898 V18bN8kwwsbQC8zz+zY7uF1/MUaYn7b1lRBcK98ksu8wdwmR+z529u45zhpY1GNCQek5 N5zFjzAUAEMc6r3b/WonHgYrbKA4PVnjO+dBuIJMD288W7WsbIzUosdah4CXZx4apzQj qEkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=abk/fHiB5arccADE4hjcjXei5qBzPz06VPd+ovt4c7U=; b=eOKtvcxZOL23lr7gJDJu9cMl4vDLXu9haUS06QF6LbNgWezwPNtF354+nXWYUluWlL 76jAs2IpMe/eYRCFKbEkK2535bELvWZpVYV9fJQ9Tdh0pHfNr3bNqMCPChA/+fcMbRoY LPBOIg+cDLzfmcRPPSSLXqIlguO82zXH1DPJIQ+NGUB6Xxe2ClcBfjxUMJppsTEmQUWL E6PfORltuIrcv+oBQ/6/oHZEBiOdKMbddv5vSM8cZjhb93Hkl0JyHH1LUXYouwMi3MZI 0XorZpFwNcHZOBRg4jFJNyLpNf5qeA2yYI2+gCbzEY4Ki/Elt4YseadxoKqIYhpdwzJG 2Z4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Z6HymoiN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q2si2618828pll.378.2019.08.23.07.11.27; Fri, 23 Aug 2019 07:11:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Z6HymoiN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389727AbfHVV3T (ORCPT + 99 others); Thu, 22 Aug 2019 17:29:19 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:39080 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730242AbfHVV3S (ORCPT ); Thu, 22 Aug 2019 17:29:18 -0400 Received: by mail-wm1-f68.google.com with SMTP id i63so7130877wmg.4 for ; Thu, 22 Aug 2019 14:29:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=abk/fHiB5arccADE4hjcjXei5qBzPz06VPd+ovt4c7U=; b=Z6HymoiNrfDvmuXKNP47F4pXs/IWLPsbv3bDkBxbvnmiXGGp3+NJYUXU+nVZiHjHOL X7/cjTWNhStOdDrdJ5DNaQOkv4BW2KQn7obTPnlh8spVWZ1f0LPI91drZ0pYASqkXbVA LpIq9ZpDBEE2/YWQyjz2D+41CI9dY2XomHR5dDHtOIyMGTAlSqCQ+UAX+mG8Rf2yiiBb OgZK2iAivQHaezJSk7B+8RuMpkhpHjCyESvZktm7IoRZZ2bm66BaBOGbms6eTtqchhot aF7ZJbKW+1KiGpeIjIZ6ryxdZbWqxi5rU9etq9NILB5Dk3JUsEAiylDM1sSNGJwnK7fB ixcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=abk/fHiB5arccADE4hjcjXei5qBzPz06VPd+ovt4c7U=; b=hskJMOw6Q8Zntf/cjKsim+rEKOPGoY7yj9jV+RXEUBEoycvPG7CTEWrYlteKOpWWT1 p4niDhJPN19BcIBstajiaFpv2K9eTxvUx4Kz7GE76wB3SHnVeuKrUxNSRkooJn4KzYLh qtLtYOvHHrE/9d319oHp4q0HCVJaJI0yz8YIYdOC5I1DNvpqxffRobiqzgWsS1nf+LQM xv9JdprONjN50Z8wFdOKZkr+gudlUC96BtuCU+J/31zoz6f4YneKaXGMls18IFpzn3iC 01rV7MkG/9WdMcSxwqwS6XCkjk8O5xlkeNWanN0VIo8nhm2mTNXTI7J8i9WI4syLCCrz CMhA== X-Gm-Message-State: APjAAAUvnFIqCnFE+i1JRoZ1vhO6E78+gKwBEWgixuBDVar3QlGfQPrE iiB8bifAaoDN+t3ErQ+uYxiKwSDtUNNJTSt2+5xBgg== X-Received: by 2002:a1c:c5c4:: with SMTP id v187mr1152547wmf.30.1566509355910; Thu, 22 Aug 2019 14:29:15 -0700 (PDT) MIME-Version: 1.0 References: <20190724234500.253358-1-nums@google.com> <20190807203812.GA20129@kernel.org> In-Reply-To: <20190807203812.GA20129@kernel.org> From: Ian Rogers Date: Thu, 22 Aug 2019 14:29:03 -0700 Message-ID: Subject: Re: [PATCH 0/3] Perf uninitialized value fixes To: Arnaldo Carvalho de Melo Cc: Numfor Mbiziwo-Tiapo , Peter Zijlstra , Ingo Molnar , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Song Liu , mbd@fb.com, LKML , Stephane Eranian Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 7, 2019 at 1:38 PM Arnaldo Carvalho de Melo wrote: > > Em Wed, Jul 24, 2019 at 04:44:57PM -0700, Numfor Mbiziwo-Tiapo escreveu: > > These patches are all warnings that the MSAN (Memory Sanitizer) build > > of perf has caught. > > > > To build perf with MSAN enabled run: > > make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory\ > > -fsanitize-memory-track-origins" > > > > (The -fsanitizer-memory-track-origins makes the bugs clearer but > > isn't strictly necessary.) > > > > (Additionally, llvm might have to be installed and clang might have to > > be specified as the compiler - export CC=/usr/bin/clang). > > > > The patches "Fix util.c use of uninitialized value warning" and "Fix > > annotate.c use of uninitialized value error" build on top of each other > > (the changes in Fix util.c use of uninitialized value warning must be > > made first). > > > > When running the commands provided in the repro instructions, MSAN will > > generate false positive uninitialized memory errors. This is happening > > because libc is not MSAN-instrumented. Finding a way to build libc with > > MSAN will get rid of these false positives and allow the real warnings > > mentioned in the patches to be shown. > > So this is because I'm not running a glibc linked with MSAN? Do you have > any pointer to help building glibc with MSAN? I want to do that inside a > container so that I can use these sanitizers, thanks, > > [root@quaco ~]# perf record -o - ls / | perf --no-pager annotate -i - --stdio > ==29732==WARNING: MemorySanitizer: use-of-uninitialized-value > ==29733==WARNING: MemorySanitizer: use-of-uninitialized-value > #0 0xcc136d in add_path /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:130:6 > #1 0xcc075e in setup_path /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:146:2 > #2 0x71298d in main /home/acme/git/perf/tools/perf/perf.c:512:2 > #0 0xcc136d in add_path /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:130:6 > #1 0xcc075e in setup_path /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:146:2 > #2 0x71298d in main /home/acme/git/perf/tools/perf/perf.c:512:2 > #3 0x7f45b9e29f32 in __libc_start_main (/lib64/libc.so.6+0x23f32) > #4 0x447dcd in _start (/home/acme/bin/perf+0x447dcd) > > Uninitialized value was created by a heap allocation > #3 0x7fd6433cff32 in __libc_start_main (/lib64/libc.so.6+0x23f32) > #4 0x447dcd in _start (/home/acme/bin/perf+0x447dcd) > > Uninitialized value was created by a heap allocation > #0 0x4507d2 in malloc /home/acme/git/llvm/projects/compiler-rt/lib/msan/msan_interceptors.cc:916:3 > #1 0x7f45b9e7fc47 in __vasprintf_internal (/lib64/libc.so.6+0x79c47) > > SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:130:6 in add_path > Exiting > #0 0x4507d2 in malloc /home/acme/git/llvm/projects/compiler-rt/lib/msan/msan_interceptors.cc:916:3 > #1 0x7fd643425c47 in __vasprintf_internal (/lib64/libc.so.6+0x79c47) > > SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/acme/git/perf/tools/lib/subcmd/exec-cmd.c:130:6 in add_path > Exiting > [root@quaco ~]# > > > Numfor Mbiziwo-Tiapo (3): > > Fix util.c use of uninitialized value warning > > Fix annotate.c use of uninitialized value error > > Fix sched-messaging.c use of uninitialized value errors > > > > tools/perf/bench/sched-messaging.c | 3 ++- > > tools/perf/util/annotate.c | 15 +++++++++++---- > > tools/perf/util/header.c | 2 +- > > 3 files changed, 14 insertions(+), 6 deletions(-) Thanks Arnaldo! Debugging the issue it isn't down glibc, there are interceptors in the sanitizers for asprintf to recognize it as a source of memory allocation. The problem is the sanitizers don't support _FORTIFY_SOURCE [1] and this is causing the false positives. The following patch works to resolve the false-positive issue for me: ----- --- a/tools/lib/subcmd/Makefile +++ b/tools/lib/subcmd/Makefile @@ -20,7 +20,13 @@ MAKEFLAGS += --no-print-directory LIBFILE = $(OUTPUT)libsubcmd.a CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC +CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -fPIC + +ifeq ($(DEBUG),0) + ifeq ($(feature-fortify-source), 1) + CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 + endif +endif ifeq ($(CC_NO_CLANG), 0) CFLAGS += -O3 ----- Thanks, Ian [1] https://github.com/google/sanitizers/wiki/AddressSanitizer#faq > > -- > > 2.22.0.657.g960e92d24f-goog > > -- > > - Arnaldo