Subject: [PATCH] perf stat: Fix default logfd to use stderr

On 29.09.11 18:48:01, Arnaldo Carvalho de Melo wrote:
> From: Jim Cromie <[email protected]>
>
> This perf stat option emulates valgrind's --log-fd option, allowing the
> user to send perf results elsewhere, and leaving stderr for use by the
> program under test. This complements --output file option, and is
> mutually exclusive with it.
>
> 3>results perf stat --log-fd 3 -- $cmd
> 3>>results perf stat --log-fd 3 --append -- $cmd
>
> The perl distro's make test.valgrind target uses valgrind's --log-fd
> option, I've adapted it to invoke perf also, and tested this patch
> there.
>
> Link: http://lkml.kernel.org/r/[email protected]
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
> Signed-off-by: Jim Cromie <[email protected]>
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

With certain shell redirections this (56f3bae) fails with a log fd
setup failure. Fix below.

-Robert



>From fd83259163c8022f9264a119d5ef7df594702f3a Mon Sep 17 00:00:00 2001
From: Robert Richter <[email protected]>
Date: Thu, 7 Jun 2012 17:41:52 +0200
Subject: [PATCH] perf stat: Fix default logfd to use stderr

When running perf-stat in certain shell environments with stdout
redirection there is a logging file descriptor setup failure:

Failed opening logfd: Invalid argument

Fixing this by setting the default fd to the correct value of 2.

Cc: Jim Cromie <[email protected]>
Cc: <[email protected]> # 3.2+
Signed-off-by: Robert Richter <[email protected]>
---
tools/perf/builtin-stat.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 2625899..c47e7d3 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -195,7 +195,7 @@ static bool csv_output = false;
static bool group = false;
static const char *output_name = NULL;
static FILE *output = NULL;
-static int output_fd;
+static int output_fd = 2;

static volatile int done = 0;

--
1.7.8.4



--
Advanced Micro Devices, Inc.
Operating System Research Center


2012-06-19 02:17:29

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH] perf stat: Fix default logfd to use stderr

Hi, Robert

On Mon, 18 Jun 2012 16:51:08 +0200, Robert Richter wrote:
> On 29.09.11 18:48:01, Arnaldo Carvalho de Melo wrote:
>> From: Jim Cromie <[email protected]>
>>
>> This perf stat option emulates valgrind's --log-fd option, allowing the
>> user to send perf results elsewhere, and leaving stderr for use by the
>> program under test. This complements --output file option, and is
>> mutually exclusive with it.
>>
>> 3>results perf stat --log-fd 3 -- $cmd
>> 3>>results perf stat --log-fd 3 --append -- $cmd
>>
>> The perl distro's make test.valgrind target uses valgrind's --log-fd
>> option, I've adapted it to invoke perf also, and tested this patch
>> there.
>>
>> Link: http://lkml.kernel.org/r/[email protected]
>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
>> Signed-off-by: Jim Cromie <[email protected]>
>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
>
> With certain shell redirections this (56f3bae) fails with a log fd
> setup failure. Fix below.
>

It looks somewhat related to Stephane's patch. Can you we check it too?

http://lkml.indiana.edu/hypermail/linux/kernel/1205.1/04232.html

Thanks,
Namhyung

2012-06-19 06:09:35

by Stephane Eranian

[permalink] [raw]
Subject: Re: [PATCH] perf stat: Fix default logfd to use stderr

On Tue, Jun 19, 2012 at 4:13 AM, Namhyung Kim <[email protected]> wrote:
> Hi, Robert
>
> On Mon, 18 Jun 2012 16:51:08 +0200, Robert Richter wrote:
>> On 29.09.11 18:48:01, Arnaldo Carvalho de Melo wrote:
>>> From: Jim Cromie <[email protected]>
>>>
>>> This perf stat option emulates valgrind's --log-fd option, allowing the
>>> user to send perf results elsewhere, and leaving stderr for use by the
>>> program under test.  This complements --output file option, and is
>>> mutually exclusive with it.
>>>
>>>    3>results  perf stat --log-fd 3          -- $cmd
>>>    3>>results perf stat --log-fd 3 --append -- $cmd
>>>
>>> The perl distro's make test.valgrind target uses valgrind's --log-fd
>>> option, I've adapted it to invoke perf also, and tested this patch
>>> there.
>>>
>>> Link: http://lkml.kernel.org/r/[email protected]
>>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
>>> Signed-off-by: Jim Cromie <[email protected]>
>>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
>>
>> With certain shell redirections this (56f3bae) fails with a log fd
>> setup failure. Fix below.
>>
>
> It looks somewhat related to Stephane's patch. Can you we check it too?
>
> http://lkml.indiana.edu/hypermail/linux/kernel/1205.1/04232.html
>
Yes, my patch is needed and it was posted over a month ago now.....
Arnaldo, please apply my patch.

> Thanks,
> Namhyung

Subject: Re: [PATCH] perf stat: Fix default logfd to use stderr

On 19.06.12 08:09:31, Stephane Eranian wrote:
> On Tue, Jun 19, 2012 at 4:13 AM, Namhyung Kim <[email protected]> wrote:
> > Hi, Robert
> >
> > On Mon, 18 Jun 2012 16:51:08 +0200, Robert Richter wrote:
> >> On 29.09.11 18:48:01, Arnaldo Carvalho de Melo wrote:
> >>> From: Jim Cromie <[email protected]>
> >>>
> >>> This perf stat option emulates valgrind's --log-fd option, allowing the
> >>> user to send perf results elsewhere, and leaving stderr for use by the
> >>> program under test. ?This complements --output file option, and is
> >>> mutually exclusive with it.
> >>>
> >>> ? ?3>results ?perf stat --log-fd 3 ? ? ? ? ?-- $cmd
> >>> ? ?3>>results perf stat --log-fd 3 --append -- $cmd
> >>>
> >>> The perl distro's make test.valgrind target uses valgrind's --log-fd
> >>> option, I've adapted it to invoke perf also, and tested this patch
> >>> there.
> >>>
> >>> Link: http://lkml.kernel.org/r/[email protected]
> >>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
> >>> Signed-off-by: Jim Cromie <[email protected]>
> >>> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
> >>
> >> With certain shell redirections this (56f3bae) fails with a log fd
> >> setup failure. Fix below.
> >>
> >
> > It looks somewhat related to Stephane's patch. Can you we check it too?
> >
> > http://lkml.indiana.edu/hypermail/linux/kernel/1205.1/04232.html

I applied the patch to my tree and this works too. Both patches
basically avoid fdopen() if a log-fd option is not given.

After reviewing the code again I noticed my code breaks the -o option.
So Stephane's patch is fine for me too, except for the fact that
--log-fd 0 is ignored. Maybe we change this by initializing output_fd
with -1 and modify the checks of output_fd?

> Yes, my patch is needed and it was posted over a month ago now.....
> Arnaldo, please apply my patch.

It is in the pull request for Ingo.

-Robert

--
Advanced Micro Devices, Inc.
Operating System Research Center

2012-06-19 11:34:47

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf stat: Fix default logfd to use stderr

Em Tue, Jun 19, 2012 at 08:09:31AM +0200, Stephane Eranian escreveu:
> On Tue, Jun 19, 2012 at 4:13 AM, Namhyung Kim <[email protected]> wrote:
> > On Mon, 18 Jun 2012 16:51:08 +0200, Robert Richter wrote:
> >> With certain shell redirections this (56f3bae) fails with a log fd
> >> setup failure. Fix below.

> > It looks somewhat related to Stephane's patch. Can you we check it too?

> > http://lkml.indiana.edu/hypermail/linux/kernel/1205.1/04232.html

> Yes, my patch is needed and it was posted over a month ago now.....
> Arnaldo, please apply my patch.

It was applied a week ago, was merged already by Ingo, should go to
Linus soon:

http://git.kernel.org/?p=linux/kernel/git/tip/tip.git;a=commit;h=fc3e4d077d5c7a7bc1ad5bc143895b4e070e5a8b

- Arnaldo

2012-06-20 12:23:25

by Stephane Eranian

[permalink] [raw]
Subject: Re: [PATCH] perf stat: Fix default logfd to use stderr

Ok, I see it now.
thanks.
the only one left at this point is the pipe mode meta-data patch
to add header in pipe mode.

On Tue, Jun 19, 2012 at 1:34 PM, Arnaldo Carvalho de Melo
<[email protected]> wrote:
> Em Tue, Jun 19, 2012 at 08:09:31AM +0200, Stephane Eranian escreveu:
>> On Tue, Jun 19, 2012 at 4:13 AM, Namhyung Kim <[email protected]> wrote:
>> > On Mon, 18 Jun 2012 16:51:08 +0200, Robert Richter wrote:
>> >> With certain shell redirections this (56f3bae) fails with a log fd
>> >> setup failure. Fix below.
>
>> > It looks somewhat related to Stephane's patch. Can you we check it too?
>
>> > http://lkml.indiana.edu/hypermail/linux/kernel/1205.1/04232.html
>
>> Yes, my patch is needed and it was posted over a month ago now.....
>> Arnaldo, please apply my patch.
>
> It was applied a week ago, was merged already by Ingo, should go to
> Linus soon:
>
> http://git.kernel.org/?p=linux/kernel/git/tip/tip.git;a=commit;h=fc3e4d077d5c7a7bc1ad5bc143895b4e070e5a8b
>
> - Arnaldo