Re: [PATCH] perf test session topology: Fix data path

From: Jiri Olsa
Date: Thu Apr 23 2020 - 08:17:24 EST


On Thu, Apr 23, 2020 at 02:53:40PM +0300, Tommi Rantala wrote:
> Commit 2d4f27999b88 ("perf data: Add global path holder") missed path
> conversion in tests/topology.c, causing the "Session topology" testcase
> to "hang" (waits forever for input from stdin) when doing "ssh $VM perf
> test".
>
> Can be reproduced by running "cat | perf test topo", and crashed by
> replacing cat with true:
>
> $ true | perf test -v topo
> 40: Session topology :
> --- start ---
> test child forked, pid 3638
> templ file: /tmp/perf-test-QPvAch
> incompatible file format
> incompatible file format (rerun with -v to learn more)
> free(): invalid pointer
> test child interrupted
> ---- end ----
> Session topology: FAILED!
>
> Fixes: 2d4f27999b88 ("perf data: Add global path holder")
> Signed-off-by: Tommi Rantala <tommi.t.rantala@xxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/tests/topology.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/tools/perf/tests/topology.c b/tools/perf/tests/topology.c
> index 4a800499d7c3..22daf2bdf5fa 100644
> --- a/tools/perf/tests/topology.c
> +++ b/tools/perf/tests/topology.c
> @@ -33,10 +33,8 @@ static int session_write_header(char *path)
> {
> struct perf_session *session;
> struct perf_data data = {
> - .file = {
> - .path = path,
> - },
> - .mode = PERF_DATA_MODE_WRITE,
> + .path = path,
> + .mode = PERF_DATA_MODE_WRITE,
> };
>
> session = perf_session__new(&data, false, NULL);
> @@ -63,10 +61,8 @@ static int check_cpu_topology(char *path, struct perf_cpu_map *map)
> {
> struct perf_session *session;
> struct perf_data data = {
> - .file = {
> - .path = path,
> - },
> - .mode = PERF_DATA_MODE_READ,
> + .path = path,
> + .mode = PERF_DATA_MODE_READ,
> };
> int i;
>
> --
> 2.25.3
>