linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] tools/perf: Fix perf probe crash by clang DWARF5 file
@ 2022-11-01 13:48 Masami Hiramatsu (Google)
  2022-11-01 13:48 ` [PATCH v2 1/3] tools/perf: Fix to avoid crashing if DW_AT_decl_file is NULL Masami Hiramatsu (Google)
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Masami Hiramatsu (Google) @ 2022-11-01 13:48 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim, linux-perf-users, linux-kernel,
	Masami Hiramatsu, Steven Rostedt

Hi,

Here is the 2nd version of the patches for perf probe which improves the
robustness against clang DWARF5 file.

Since the Clang generates a bit different DWARF5 file, the perf probe
crashes or failes to analyze it. There are actually fragile code against
it, so I fixed it ([1/3]) to avoid crash by SEGV. And make it accepts
Clang's DWARF5 file ([2/3],[3/3]).

Without this series, the perf probe crashes with the DWARF5 file
which generated by clang as below;
 
  $ ./perf probe -k $BIN_PATH/vmlinux -s $SRC_PATH -L vfs_read:10
  Segmentation fault

This series fixes it to handle such file correctly;

  $ ./perf probe -k $BIN_PATH/vmlinux -s $SRC_PATH -L vfs_read:10
  <vfs_read@$SRC_PATH/fs/read_write.c:10>
 
       11         ret = rw_verify_area(READ, file, pos, count);
       12         if (ret)
                           return ret;


On the DWARF5 specification, Sec 2.14, there is
"The value 0 indicates that no source file has been specified."
for DW_AT_decl_file, but clang generated DWARF5 will use the value 0.

This issue is discussed on DWARF std ML;
https://www.mail-archive.com/dwarf-discuss@lists.dwarfstd.org/msg00884.html

And suggested that removing this part from the specification.
http://wiki.dwarfstd.org/index.php?title=DWARF5_Line_Table_File_Numbers

So as far as I understand, this is out of standard at this moment,
but the standard itself has a discussion on this part. And maybe updated
as currently clang does in the next release/revision.

Thank you,

---

Masami Hiramatsu (Google) (3):
      tools/perf: Fix to avoid crashing if DW_AT_decl_file is NULL
      tools/perf: Fix to use dwarf_attr_integrate for generic attr accessor
      tools/perf: Fix to get declared file name from clang DWARF5


 tools/perf/util/dwarf-aux.c    |   58 ++++++++++++++++++++++++++++------------
 tools/perf/util/dwarf-aux.h    |    3 ++
 tools/perf/util/probe-finder.c |   37 +++++++++++++++++---------
 3 files changed, 68 insertions(+), 30 deletions(-)

--
Masami Hiramatsu (Google) <mhiramat@kernel.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2023-08-29 14:15 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-01 13:48 [PATCH v2 0/3] tools/perf: Fix perf probe crash by clang DWARF5 file Masami Hiramatsu (Google)
2022-11-01 13:48 ` [PATCH v2 1/3] tools/perf: Fix to avoid crashing if DW_AT_decl_file is NULL Masami Hiramatsu (Google)
2022-11-01 13:48 ` [PATCH v2 2/3] tools/perf: Fix to use dwarf_attr_integrate for generic attr accessor Masami Hiramatsu (Google)
2022-11-01 13:48 ` [PATCH v2 3/3] tools/perf: Fix to get declared file name from clang DWARF5 Masami Hiramatsu (Google)
2023-06-09 12:21   ` Georg Müller
2023-06-15 11:42     ` Linux regression tracking #adding (Thorsten Leemhuis)
2023-08-29 13:41       ` Linux regression tracking #update (Thorsten Leemhuis)
2023-06-15 14:02     ` Georg Müller
2023-06-15 20:01     ` [PATCH] perf probe: read DWARF files from the correct CU Georg Müller
2023-06-22 22:04       ` Georg Müller
2023-07-11 12:57       ` Arnaldo Carvalho de Melo
2023-07-11 13:20         ` Masami Hiramatsu
2023-07-11 14:41           ` Arnaldo Carvalho de Melo
2023-06-28  8:23     ` [PATCH v2 0/2] perf probe: fix regression introduced by switch to die_get_decl_file Georg Müller
2023-06-28  8:23       ` [PATCH v2 1/2] perf probe: add test for " Georg Müller
2023-07-27 17:45         ` Ian Rogers
2023-07-28 14:41           ` Georg Müller
2023-06-28  8:23       ` [PATCH v2 2/2] perf probe: read DWARF files from the correct CU Georg Müller
2023-06-28  8:41       ` [PATCH v2 0/2] perf probe: fix regression introduced by switch to die_get_decl_file Linux regression tracking (Thorsten Leemhuis)
2022-11-02  0:03 ` [PATCH v2 0/3] tools/perf: Fix perf probe crash by clang DWARF5 file Namhyung Kim
2022-11-03 12:31   ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).