From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753795AbeAOHBN (ORCPT + 1 other); Mon, 15 Jan 2018 02:01:13 -0500 Received: from mail-pl0-f67.google.com ([209.85.160.67]:37707 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753535AbeAOHBM (ORCPT ); Mon, 15 Jan 2018 02:01:12 -0500 X-Google-Smtp-Source: ACJfBos5MyfY06tnIPALYx4PIsMk6p4mit9CJSJOxNrhq9TbdPDQ+MCJ1zx3KHldcpS+NPxP6GoePQ== Date: Mon, 15 Jan 2018 13:04:48 +0800 From: Wang YanQing To: acme@redhat.com Cc: peterz@infradead.org, mingo@redhat.com, jolsa@redhat.com, alexander.shishkin@linux.intel.com, linux-kernel@vger.kernel.org Subject: [PATCH] perf:util:dso: Using O_CLOEXEC in do_open Message-ID: <20180115050448.GA20759@udknight> Mail-Followup-To: Wang YanQing , acme@redhat.com, peterz@infradead.org, mingo@redhat.com, jolsa@redhat.com, alexander.shishkin@linux.intel.com, linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.7.1 (2016-10-04) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: I meet strange behavior with below commands on my gentoo box: 1:perf kmem record 2:CTRL-C to stop 1 3:perf report 4:"Enter", "Enter", "Run scripts for all samples", "event_analyzing_sample". Then perf report: " No kallsyms or vmlinux with build-id xxxx was found /lib/modules/4.10.0+/build/vmlinux with build id xxxx not found, continuing without symbols ". It is strange because I am sure /lib/modules/4.10.0+/build/vmlinux is right for perf.data. After digging, I find out the reason is "perf report" generates many open fds, then "script_browse" uses popen to run "perf script" which run out of open files. The gentoo box has a small default value for "max open files", 1024. Yes, "ulimit -n " with a bigger number could fix it, but I think that using O_CLOEXEC in do_open is a better way. Signed-off-by: Wang YanQing --- tools/perf/util/dso.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c index d5b6f7f..36ef45b 100644 --- a/tools/perf/util/dso.c +++ b/tools/perf/util/dso.c @@ -446,7 +446,7 @@ static int do_open(char *name) char sbuf[STRERR_BUFSIZE]; do { - fd = open(name, O_RDONLY); + fd = open(name, O_RDONLY|O_CLOEXEC); if (fd >= 0) return fd; -- 1.8.5.6.2.g3d8a54e.dirty