Dump command line of faulting process to syslog
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest4 patches 2 repliesIn review
- v23 patches 0 repliesSuperseded
- v13 patches 6 repliesSuperseded
Changes in v3 from the cover letter
- require task to be locked by caller, noticed by kernel test robot
- add parameter names in header files, noticed by kernel test robot
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | proc: Add get_task_cmdline_kernel() functionfs/ include/ | +56 | 0 replies | |
| 2/4 | lib/dump_stack: Add dump_stack_print_cmdline() and wire up in dump_stack_print_info()include/ lib/ | +39 | 0 replies | |
| 3/4 | x86/fault: Dump command line of faulting process to syslogarch/ | +2 | 0 replies | |
| 4/4 | arc: Use generic dump_stack_print_cmdline() implementationarch/ | +0 | 2 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.
Cover letter [PATCH v3 0/4] Dump command line of faulting process to syslog
This patch series dumps the command line (including the program parameters) of a faulting process to the syslog.
The motivation for this patch is that it's sometimes quite hard to find out and annoying to not know which program *exactly* faulted when looking at the syslog.
For example, a dump on parisc shows:
do_page_fault() command='cc1' type=15 address=0x00000000 in libc-2.33.so[f6abb000+184000]
-> We see the "cc1" compiler crashed, but it would be useful to know which file was compiled. With this patch you will see that cc1 crashed while compiling some haskell code:
cc1[13472] cmdline: /usr/lib/gcc/hppa-linux-gnu/12/cc1 -quiet @/tmp/ccRkFSfY -imultilib . -imultiarch hppa-linux-gnu -D USE_MINIINTERPRETER -D NO_REGS -D _HPUX_SOURCE -D NOSMP -D THREADED_RTS -include /build/ghc/ghc-9.0.2/includes/dist-install/build/ghcversion.h -iquote compiler/GHC/Iface -quiet -dumpdir /tmp/ghc13413_0/ -dumpbase ghc_5.hc -dumpbase-ext .hc -O -Wimplicit -fno-PIC -fwrapv -fno-builtin -fno-strict-aliasing -o /tmp/ghc13413_0/ghc_5.s
Another example are the glibc testcases which always segfault in "ld.so.1" with no other info:
do_page_fault() command='ld.so.1' type=15 address=0x565921d8 in libc.so[f7339000+1bb000]
-> With the patch you can see it was the "tst-safe-linking-malloc-hugetlb1" testcase:
ld.so.1[1151] cmdline: /home/gnu/glibc/objdir/elf/ld.so.1 --library-path /home/gnu/glibc/objdir:/home/gnu/glibc/objdir/math:/home/gnu/
/home/gnu/glibc/objdir/malloc/tst-safe-linking-malloc-hugetlb1An example of a typical x86 fault shows up as:
crash[2326]: segfault at 0 ip 0000561a7969c12e sp 00007ffe97a05630 error 6 in crash[561a7969c000+1000]
Code: 68 ff ff ff c6 05 19 2f 00 00 01 5d c3 0f 1f 80 00 00 00 00 c3 0f 1f 80 00 00 ...
-> with this patch you now see the whole command line:
crash[2326] cmdline: ./crash test_write_to_page_0
The patches are relatively small, and reuse functions which are used to create the output for the /proc/<pid>/cmdline files.
The relevant changes are in patches #1 and #2.
Patch #3 adds the cmdline dump on x86.
Patch #4 drops code from arc which now becomes unnecessary as this is done by generic code.
Helge
---
Changes in v3:
- require task to be locked by caller, noticed by kernel test robot
- add parameter names in header files, noticed by kernel test robot
Changes in v2:
- Don't dump all or parts of the commandline depending on the kptr_restrict sysctl value (suggested by Josh Triplett).
- Patch sent to more arch mailing lists
Helge Deller (4):
proc: Add get_task_cmdline_kernel() function lib/dump_stack: Add dump_stack_print_cmdline() and wire up in
dump_stack_print_info()
x86/fault: Dump command line of faulting process to syslog
arc: Use generic dump_stack_print_cmdline() implementation
arch/arc/kernel/troubleshoot.c | 24 ----------- arch/x86/mm/fault.c | 2 + fs/proc/base.c | 74 +++++++++++++++++++++++----------- include/linux/printk.h | 5 +++ include/linux/proc_fs.h | 5 +++ lib/dump_stack.c | 34 ++++++++++++++++ 6 files changed, 97 insertions(+), 47 deletions(-)
--
2.37.1