Re: [BUG] perf test 29 crashing

From: Arnaldo Carvalho de Melo
Date: Thu Jun 30 2016 - 15:57:08 EST


Em Thu, Jun 30, 2016 at 06:18:16PM +0200, Jiri Olsa escreveu:
> On Thu, Jun 30, 2016 at 05:10:16PM +0200, Jiri Olsa wrote:
>
> SNIP
>
> >
> > hate to be the only one with this.. now I need to dive in ;-)
>
> it was the setup in my .perfconfig:
>
> [call-graph]
> threshold=10
>
> caused some of the callchains to disappear and screw the test,
> I think we should make that test using default values, like in
> attached patch
>
> however maybe we should think about disabling ~/.perfconfig
> overload for perf test at all
>
> I'll post patch below with my other stuff if there are no
> objection or another solution

Yeah, tests expect things in a certain way, so shouldn't be affect by
local .perfconfig stuff, ignoring it in tests is the way to go.

But probably we should instead check if the subcommand is 'test' when
calling into perf_config(), no? I.e. Other tests may suffer from this
issue.

- Arnaldo

> thanks,
> jirka
>
> ---
> diff --git a/tools/perf/tests/hists_cumulate.c b/tools/perf/tests/hists_cumulate.c
> index a9e3db3afac4..1208284a7338 100644
> --- a/tools/perf/tests/hists_cumulate.c
> +++ b/tools/perf/tests/hists_cumulate.c
> @@ -666,6 +666,8 @@ static int test4(struct perf_evsel *evsel, struct machine *machine)
> perf_evsel__set_sample_bit(evsel, CALLCHAIN);
>
> setup_sorting(NULL);
> +
> + callchain_param = callchain_param_default;
> callchain_register_param(&callchain_param);
>
> err = add_hist_entries(hists, machine);
> diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
> index a70f6b54eb92..13e75549c440 100644
> --- a/tools/perf/util/callchain.h
> +++ b/tools/perf/util/callchain.h
> @@ -106,6 +106,7 @@ struct callchain_param {
> };
>
> extern struct callchain_param callchain_param;
> +extern struct callchain_param callchain_param_default;
>
> struct callchain_list {
> u64 ip;
> diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
> index e08b9a092a23..5f44a21955cd 100644
> --- a/tools/perf/util/util.c
> +++ b/tools/perf/util/util.c
> @@ -19,12 +19,19 @@
> #include "callchain.h"
> #include "strlist.h"
>
> -struct callchain_param callchain_param = {
> - .mode = CHAIN_GRAPH_ABS,
> - .min_percent = 0.5,
> - .order = ORDER_CALLEE,
> - .key = CCKEY_FUNCTION,
> - .value = CCVAL_PERCENT,
> +#define CALLCHAIN_PARAM_DEFAULT \
> + .mode = CHAIN_GRAPH_ABS, \
> + .min_percent = 0.5, \
> + .order = ORDER_CALLEE, \
> + .key = CCKEY_FUNCTION, \
> + .value = CCVAL_PERCENT, \
> +
> +struct callchain_param callchain_param = {
> + CALLCHAIN_PARAM_DEFAULT
> +};
> +
> +struct callchain_param callchain_param_default = {
> + CALLCHAIN_PARAM_DEFAULT
> };
>
> /*