From: Namhyung Kim <namhyung@kernel.org>
To: Aditya Bodkhe <adityab1@linux.ibm.com>
Cc: linux-perf-users@vger.kernel.org, Disha Goel <Disha.Goel@ibm.com>,
Aditya Bodkhe <aditya.b1@linux.ibm.com>,
Adrian Hunter <adrian.hunter@intel.com>
Subject: Re: [PATCH] perf script: perf script tests fails with segfault
Date: Thu, 20 Mar 2025 23:04:53 -0700 [thread overview]
Message-ID: <Z90BhWbDJjR15_6q@google.com> (raw)
In-Reply-To: <20250320091551.17846-1-adityab1@linux.ibm.com>
CC-ing Adrian,
On Thu, Mar 20, 2025 at 02:45:51PM +0530, Aditya Bodkhe wrote:
> perf script: pert script tests fails with segmentation fault as below:
>
> 1. Run perf test -vvv 'perf script tests'
>
> 92: perf script tests:
> --- start ---
> test child forked, pid 103769
> DB test
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.012 MB /tmp/perf-test-script.7rbftEpOzX/perf.data (9 samples) ]
> /usr/libexec/perf-core/tests/shell/script.sh: line 35: 103780 Segmentation fault (core dumped) perf script -i "${perfdatafile}" -s "${db_test}"
> --- Cleaning up ---
> ---- end(-1) ----
> 92: perf script tests : FAILED!
>
> Backtrace pointed to :
> #0 0x0000000010247dd0 in maps.machine ()
> #1 0x00000000101d178c in db_export.sample ()
> #2 0x00000000103412c8 in python_process_event ()
> #3 0x000000001004eb28 in process_sample_event ()
> #4 0x000000001024fcd0 in machines.deliver_event ()
> #5 0x000000001025005c in perf_session.deliver_event ()
> #6 0x00000000102568b0 in __ordered_events__flush.part.0 ()
> #7 0x0000000010251618 in perf_session.process_events ()
> #8 0x0000000010053620 in cmd_script ()
> #9 0x00000000100b5a28 in run_builtin ()
> #10 0x00000000100b5f94 in handle_internal_command ()
> #11 0x0000000010011114 in main ()
>
> Further investigation reveals that this occurs in the `perf script tests`,
> because it uses `db_test.py` script. This script sets `perf_db_export_mode = True`.
>
> With `perf_db_export_mode` enabled, if a sample originates from a hypervisor,
> perf doesn't set maps for “[H]” sample in the code. Consequently, `al->maps` remains NULL
> when `maps__machine(al->maps)` is called from `db_export__sample`.
>
> To prevent this NULL pointer dereference, add a check for `al->maps == NULL`
> before calling `maps__machine()`. If `al->maps` is NULL, return `-1` to avoid
> the segmentation fault.
>
> Reported-by: Disha Goel <Disha.Goel@ibm.com>
> Signed-off-by: Aditya Bodkhe <aditya.b1@linux.ibm.com>
> ---
> tools/perf/util/db-export.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
> index 50f916374d87..f355878a8c82 100644
> --- a/tools/perf/util/db-export.c
> +++ b/tools/perf/util/db-export.c
> @@ -365,6 +365,11 @@ int db_export__sample(struct db_export *dbe, union perf_event *event,
> if (err)
> return err;
>
> + if (!al->maps) {
> + err = -1;
> + goto out_put;
> + }
Maybe better to check it before db_export__evsel(). Also it seems it
should not goto out_put as it doesn't get the main_thread yet.
Thanks,
Namhyung
> +
> machine = maps__machine(al->maps);
> err = db_export__machine(dbe, machine);
> if (err)
> --
> 2.43.0
>
next prev parent reply other threads:[~2025-03-21 6:04 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 9:15 [PATCH] perf script: perf script tests fails with segfault Aditya Bodkhe
2025-03-21 6:04 ` Namhyung Kim [this message]
2025-03-21 7:58 ` Adrian Hunter
2025-04-17 8:05 ` Aditya Bodkhe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z90BhWbDJjR15_6q@google.com \
--to=namhyung@kernel.org \
--cc=Disha.Goel@ibm.com \
--cc=aditya.b1@linux.ibm.com \
--cc=adityab1@linux.ibm.com \
--cc=adrian.hunter@intel.com \
--cc=linux-perf-users@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.