Messages in this thread | | | Date | Wed, 20 Mar 2024 12:41:42 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH v2 1/2] perf: Suggest inbuilt commands for unknown command |
| |
On Wed, Mar 20, 2024 at 12:32:50PM -0300, Arnaldo Carvalho de Melo wrote: > On Wed, Mar 20, 2024 at 12:20:20PM -0300, Arnaldo Carvalho de Melo wrote: > > On Wed, Mar 20, 2024 at 08:12:56AM -0700, Ian Rogers wrote: > > > Ah, the change: > > > > > > - static int done_help; > > > + int done_help; > > > > > > created an uninitialized use. Compiler warning/sanitizers? Anyway, > > > done_help needs hoisting out of the loop and initializing to zero, or > > > being made static again (ugh). > > > > ⬢[acme@toolbox perf-tools-next]$ git diff > > diff --git a/tools/perf/perf.c b/tools/perf/perf.c > > index c719e6ccd9e27778..f9532b20e87cbf05 100644 > > --- a/tools/perf/perf.c > > +++ b/tools/perf/perf.c > > @@ -459,7 +459,7 @@ static int libperf_print(enum libperf_print_level level, > > > > int main(int argc, const char **argv) > > { > > - int err; > > + int err, done_help = 0; > > const char *cmd; > > char sbuf[STRERR_BUFSIZE]; > > > > @@ -558,8 +558,6 @@ int main(int argc, const char **argv) > > pthread__block_sigwinch(); > > > > while (1) { > > - int done_help; > > - > > run_argv(&argc, &argv); > > > > if (errno != ENOENT) > > ⬢[acme@toolbox perf-tools-next]$ perf raccord > > Fatal: Out of memory, realloc failed > > ⬢[acme@toolbox perf-tools-next]$ > > > > Then: > > > > diff --git a/tools/perf/perf.c b/tools/perf/perf.c > > index c719e6ccd9e27778..54f62aa6612bc290 100644 > > --- a/tools/perf/perf.c > > +++ b/tools/perf/perf.c > > @@ -558,7 +558,7 @@ int main(int argc, const char **argv) > > pthread__block_sigwinch(); > > > > while (1) { > > - int done_help; > > + static int done_help; > > > > run_argv(&argc, &argv); > > > > ⬢[acme@toolbox perf-tools-next]$ perf raccord > > Fatal: Out of memory, realloc failed > > ⬢[acme@toolbox perf-tools-next]$ > > That main_cmds variable is uninitialized, which ends up making > add_cmdname() to explode, are you sure this is working on your side? > > Further clarifying, this is without considering the second patch, I > haven't got to it yet, from what I recall from the description it > shouldn't matter tho. > > - Arnaldo > > ⬢[acme@toolbox perf-tools-next]$ git diff > diff --git a/tools/perf/perf.c b/tools/perf/perf.c > index c719e6ccd9e27778..164b3c78baff4204 100644 > --- a/tools/perf/perf.c > +++ b/tools/perf/perf.c > @@ -558,7 +558,7 @@ int main(int argc, const char **argv) > pthread__block_sigwinch(); > > while (1) { > - int done_help; > + static int done_help; > > run_argv(&argc, &argv); > > @@ -566,7 +566,7 @@ int main(int argc, const char **argv) > break; > > if (!done_help) { > - struct cmdnames main_cmds; > + struct cmdnames main_cmds = { 0, }; > > for (unsigned int i = 0; i < ARRAY_SIZE(commands); i++) { > add_cmdname(&main_cmds, > ⬢[acme@toolbox perf-tools-next]$ perf raccord > perf: 'raccord' is not a perf-command. See 'perf --help'. > ⬢[acme@toolbox perf-tools-next]$
But:
⬢[acme@toolbox perf-tools-next]$ perf raccord perf: 'raccord' is not a perf-command. See 'perf --help'. ⬢[acme@toolbox perf-tools-next]$ perf ricord perf: 'ricord' is not a perf-command. See 'perf --help'.
Did you mean this? record ⬢[acme@toolbox perf-tools-next]$ perf ricord perf: 'ricord' is not a perf-command. See 'perf --help'.
Did you mean this? record ⬢[acme@toolbox perf-tools-next]$
So I'll add that and go on from there.
- Arnaldo
| |