applied: https://github.com/crash-utility/crash/commit/99bb57ac98afd89fcf23f0c8bc637821dcbd278f
On Wed, Sep 10, 2025 at 2:33 PM Tao Liu <[email protected]> wrote: > > Hi lianbo, > > Thanks for the v2, LGTM, ack. > > > On Mon, Sep 8, 2025 at 8:42 PM Lianbo Jiang <[email protected]> wrote: > > > > Without the patch: > > crash> log > > ... > > [ 2174.308966] Call Trace: > > [ 2174.311693] <TASK> > > [ 2174.314033] dump_stack_lvl+0x5d/0x80 > > [ 2174.318125] panic+0x156/0x32a > > [ 2174.321539] _RNvCscb18lrEyTSA_10rust_panic10area_in_hp+0xf7/0x120 > > [rust_panic] > > [ 2174.329700] ? console_unlock+0x9c/0x140 > > [ 2174.334080] ? irq_work_queue+0x2d/0x50 > > [ 2174.338352] ? __pfx_init_module+0x10/0x10 [rust_panic] > > [ 2174.344183] > > _RNvMCscb18lrEyTSA_10rust_panicNtB2_10HelloPanic8step_two+0x20/0xe0 > > [rust_panic] > > [ 2174.353698] ? _printk+0x6b/0x90 > > ... > > > > With the patch: > > crash> log > > ... > > [ 2174.308966] Call Trace: > > [ 2174.311693] <TASK> > > [ 2174.314033] dump_stack_lvl+0x5d/0x80 > > [ 2174.318125] panic+0x156/0x32a > > [ 2174.321539] rust_panic::area_in_hp+0xf7/0x120 [rust_panic] > > [ 2174.329700] ? console_unlock+0x9c/0x140 > > [ 2174.334080] ? irq_work_queue+0x2d/0x50 > > [ 2174.338352] ? __pfx_init_module+0x10/0x10 [rust_panic] > > [ 2174.344183] <rust_panic::HelloPanic>::step_two+0x20/0xe0 [rust_panic] > > [ 2174.353698] ? _printk+0x6b/0x90 > > ... > > > > Signed-off-by: Lianbo Jiang <[email protected]> > > --- > > Note: > > 1. Add some checks to avoid the risk of buffer overflow. > > > > Makefile | 2 +- > > printk.c | 33 ++++++++++++++++++++++++++++++++- > > 2 files changed, 33 insertions(+), 2 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index fc1c9588dcfa..b277129f6df2 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -421,7 +421,7 @@ kernel.o: ${GENERIC_HFILES} kernel.c > > ${CC} -c ${CRASH_CFLAGS} kernel.c -I${BFD_DIRECTORY} > > -I${GDB_INCLUDE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR} > > > > printk.o: ${GENERIC_HFILES} printk.c > > - ${CC} -c ${CRASH_CFLAGS} printk.c ${WARNING_OPTIONS} > > ${WARNING_ERROR} > > + ${CC} -c ${CRASH_CFLAGS} printk.c -I${GDB_INCLUDE_DIRECTORY} > > ${WARNING_OPTIONS} ${WARNING_ERROR} > > > > gdb_interface.o: ${GENERIC_HFILES} gdb_interface.c > > ${CC} -c ${CRASH_CFLAGS} gdb_interface.c ${WARNING_OPTIONS} > > ${WARNING_ERROR} > > diff --git a/printk.c b/printk.c > > index 95db7e607e4c..ae28c4fa0b21 100644 > > --- a/printk.c > > +++ b/printk.c > > @@ -1,5 +1,6 @@ > > #include "defs.h" > > #include <ctype.h> > > +#include "demangle.h" > > > > /* convenience struct for passing many values to helper functions */ > > struct prb_map { > > @@ -201,14 +202,44 @@ dump_record(struct prb_map *m, unsigned long id, int > > msg_flags) > > > > text = m->text_data + begin; > > > > + if (text_len > BUFSIZE) { > > + error(WARNING, "\nThe messages could be truncated!\n"); > > + text_len = BUFSIZE; > > + } > > + > > for (i = 0, p = text; i < text_len; i++, p++) { > > if (*p == '\n') > > fprintf(fp, "\n%s", space(ilen)); > > else if (isprint(*p) || isspace(*p)) > > - fputc(*p, fp); > > + sprintf(&buf[i], "%c", *p); > > else > > fputc('.', fp); > > } > > + /* > > + * Try to demangle a mangled Rust symbol(calltrace) from log buffer > > + */ > > + char *p1 = strstr(buf, "_R"); > > + if (!p1) > > + p1 = strstr(buf, "_ZN"); > > + char *p2 = strchrnul(buf, '+'); > > + if (p1 && p2) { > > + char mangled[BUFSIZE] = {0}; > > + char demangled[BUFSIZE] = {0}; > > + char *res; > > + size_t slen = p1 - buf; > > + > > + if (slen) > > + memcpy(demangled, buf, slen); > > + > > + memcpy(mangled, p1, p2-p1); > > + res = rust_demangle(mangled, DMGL_RUST); > > + if (res) { > > + snprintf(demangled+slen, BUFSIZE-slen, "%s%s", res, > > p2); > > + fprintf(fp, "%s",demangled); > > + free(res); > > + } > > + } else > > + fprintf(fp, "%s", buf); > > > > if (msg_flags & SHOW_LOG_DICT) { > > text = info + OFFSET(printk_info_dev_info) + > > -- > > 2.50.1 > > -- Crash-utility mailing list -- [email protected] To unsubscribe send an email to [email protected] https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/ Contribution Guidelines: https://github.com/crash-utility/crash/wiki
