2022-11-30 11:42:00

by James Clark

[permalink] [raw]
Subject: [PATCH 2/2] perf stat: Fix invalid output handle

In this context, 'os' is already a pointer so the extra dereference
isn't required. This fixes the following test failure on aarch64:

$ ./perf test "json output" -vvv
92: perf stat JSON output linter :
--- start ---
Checking json output: no args Test failed for input:
...
Fatal error: glibc detected an invalid stdio handle
---- end ----
perf stat JSON output linter: FAILED!

Fixes: e7f4da312259 ("perf stat: Pass struct outstate to printout()")
Signed-off-by: James Clark <[email protected]>
---
tools/perf/util/stat-display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 847acdb5dc40..eac5ac3a734c 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -741,7 +741,7 @@ static void printout(struct perf_stat_config *config, struct outstate *os,
perf_stat__print_shadow_stats(config, counter, uval, map_idx,
&out, &config->metric_events, &rt_stat);
} else {
- pm(config, &os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
+ pm(config, os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
}

if (!config->metric_only) {
--
2.25.1


2022-11-30 19:12:42

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH 2/2] perf stat: Fix invalid output handle

On Wed, Nov 30, 2022 at 3:15 AM James Clark <[email protected]> wrote:
>
> In this context, 'os' is already a pointer so the extra dereference
> isn't required. This fixes the following test failure on aarch64:
>
> $ ./perf test "json output" -vvv
> 92: perf stat JSON output linter :
> --- start ---
> Checking json output: no args Test failed for input:
> ...
> Fatal error: glibc detected an invalid stdio handle
> ---- end ----
> perf stat JSON output linter: FAILED!
>
> Fixes: e7f4da312259 ("perf stat: Pass struct outstate to printout()")
> Signed-off-by: James Clark <[email protected]>

Thanks for fixing this. I'm not sure how I missed it.. :(

Acked-by: Namhyung Kim <[email protected]>

Thanks,
Namhyung


> ---
> tools/perf/util/stat-display.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index 847acdb5dc40..eac5ac3a734c 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -741,7 +741,7 @@ static void printout(struct perf_stat_config *config, struct outstate *os,
> perf_stat__print_shadow_stats(config, counter, uval, map_idx,
> &out, &config->metric_events, &rt_stat);
> } else {
> - pm(config, &os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
> + pm(config, os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
> }
>
> if (!config->metric_only) {
> --
> 2.25.1
>

2022-12-01 11:01:27

by James Clark

[permalink] [raw]
Subject: Re: [PATCH 2/2] perf stat: Fix invalid output handle



On 30/11/2022 18:32, Namhyung Kim wrote:
> On Wed, Nov 30, 2022 at 3:15 AM James Clark <[email protected]> wrote:
>>
>> In this context, 'os' is already a pointer so the extra dereference
>> isn't required. This fixes the following test failure on aarch64:
>>
>> $ ./perf test "json output" -vvv
>> 92: perf stat JSON output linter :
>> --- start ---
>> Checking json output: no args Test failed for input:
>> ...
>> Fatal error: glibc detected an invalid stdio handle
>> ---- end ----
>> perf stat JSON output linter: FAILED!
>>
>> Fixes: e7f4da312259 ("perf stat: Pass struct outstate to printout()")
>> Signed-off-by: James Clark <[email protected]>
>
> Thanks for fixing this. I'm not sure how I missed it.. :(
>

It seems to only go down that path on some configuration. At least on
x86 the test was passing fine for me.

> Acked-by: Namhyung Kim <[email protected]>

Thanks for the review!

>
> Thanks,
> Namhyung
>
>
>> ---
>> tools/perf/util/stat-display.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
>> index 847acdb5dc40..eac5ac3a734c 100644
>> --- a/tools/perf/util/stat-display.c
>> +++ b/tools/perf/util/stat-display.c
>> @@ -741,7 +741,7 @@ static void printout(struct perf_stat_config *config, struct outstate *os,
>> perf_stat__print_shadow_stats(config, counter, uval, map_idx,
>> &out, &config->metric_events, &rt_stat);
>> } else {
>> - pm(config, &os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
>> + pm(config, os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
>> }
>>
>> if (!config->metric_only) {
>> --
>> 2.25.1
>>

2022-12-04 17:27:46

by Athira Rajeev

[permalink] [raw]
Subject: Re: [PATCH 2/2] perf stat: Fix invalid output handle



> On 01-Dec-2022, at 3:36 PM, James Clark <[email protected]> wrote:
>
>
>
> On 30/11/2022 18:32, Namhyung Kim wrote:
>> On Wed, Nov 30, 2022 at 3:15 AM James Clark <[email protected]> wrote:
>>>
>>> In this context, 'os' is already a pointer so the extra dereference
>>> isn't required. This fixes the following test failure on aarch64:
>>>
>>> $ ./perf test "json output" -vvv
>>> 92: perf stat JSON output linter :
>>> --- start ---
>>> Checking json output: no args Test failed for input:
>>> ...
>>> Fatal error: glibc detected an invalid stdio handle
>>> ---- end ----
>>> perf stat JSON output linter: FAILED!
>>>
>>> Fixes: e7f4da312259 ("perf stat: Pass struct outstate to printout()")
>>> Signed-off-by: James Clark <[email protected]>
>>
>> Thanks for fixing this. I'm not sure how I missed it.. :(
>>
>
> It seems to only go down that path on some configuration. At least on
> x86 the test was passing fine for me.
>
>> Acked-by: Namhyung Kim <[email protected]>
>
> Thanks for the review!

Faced same issue on powerpc. Tested with this change and it works with this patch.

Tested-by: Athira Rajeev <[email protected]>

Thanks
Athira
>
>>
>> Thanks,
>> Namhyung
>>
>>
>>> ---
>>> tools/perf/util/stat-display.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
>>> index 847acdb5dc40..eac5ac3a734c 100644
>>> --- a/tools/perf/util/stat-display.c
>>> +++ b/tools/perf/util/stat-display.c
>>> @@ -741,7 +741,7 @@ static void printout(struct perf_stat_config *config, struct outstate *os,
>>> perf_stat__print_shadow_stats(config, counter, uval, map_idx,
>>> &out, &config->metric_events, &rt_stat);
>>> } else {
>>> - pm(config, &os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
>>> + pm(config, os, /*color=*/NULL, /*format=*/NULL, /*unit=*/"", /*val=*/0);
>>> }
>>>
>>> if (!config->metric_only) {
>>> --
>>> 2.25.1

2022-12-05 13:23:15

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 2/2] perf stat: Fix invalid output handle

Em Sun, Dec 04, 2022 at 10:38:28PM +0530, Athira Rajeev escreveu:
>
>
> > On 01-Dec-2022, at 3:36 PM, James Clark <[email protected]> wrote:
> >
> >
> >
> > On 30/11/2022 18:32, Namhyung Kim wrote:
> >> On Wed, Nov 30, 2022 at 3:15 AM James Clark <[email protected]> wrote:
> >>>
> >>> In this context, 'os' is already a pointer so the extra dereference
> >>> isn't required. This fixes the following test failure on aarch64:
> >>>
> >>> $ ./perf test "json output" -vvv
> >>> 92: perf stat JSON output linter :
> >>> --- start ---
> >>> Checking json output: no args Test failed for input:
> >>> ...
> >>> Fatal error: glibc detected an invalid stdio handle
> >>> ---- end ----
> >>> perf stat JSON output linter: FAILED!
> >>>
> >>> Fixes: e7f4da312259 ("perf stat: Pass struct outstate to printout()")
> >>> Signed-off-by: James Clark <[email protected]>
> >>
> >> Thanks for fixing this. I'm not sure how I missed it.. :(
> >>
> >
> > It seems to only go down that path on some configuration. At least on
> > x86 the test was passing fine for me.
> >
> >> Acked-by: Namhyung Kim <[email protected]>
> >
> > Thanks for the review!
>
> Faced same issue on powerpc. Tested with this change and it works with this patch.
>
> Tested-by: Athira Rajeev <[email protected]>

Thanks, applied.

- Arnaldo