-----Original Message----- > Commit 2fab8fbc0c4f1c4cbe889de4cead5f7457a19f77 (symbols: Implement > install and remove operations for mod_symname_hash) added new member > variable mod_symname_hash in the middle of struct symbol_table_data: > > diff --git a/defs.h b/defs.h > index cbd45e5..bbdca79 100644 > --- a/defs.h > +++ b/defs.h > @@ -2755,6 +2755,7 @@ struct symbol_table_data { > double val_hash_searches; > double val_hash_iterations; > struct syment *symname_hash[SYMNAME_HASH]; > + struct syment *mod_symname_hash[SYMNAME_HASH]; > struct symbol_namespace kernel_namespace; > struct syment *ext_module_symtable; > struct syment *ext_module_symend; > > which breaks compatibility of struct symbol_table_data for extension > modules. In general, new member variables must be added at the end of > structures to maintain compatibility of data structures shared among > extension modules. > > For example, as the result, crash trace command results in > segmentation fault: > > crash> trace show > > Segmentation fault (core dumped) > > in context of save_proc_kallsyms(): > > (gdb) bt > #0 save_proc_kallsyms (fd=<optimized out>) at > /usr/src/debug/crash-trace-command-3.0-4.el9.x86_64/trace.c:2234 > #1 __trace_cmd_data_output (fd=<optimized out>) at > /usr/src/debug/crash-trace-command-3.0-4.el9.x86_64/trace.c:2538 > #2 0x00007f804e068dd5 in trace_cmd_data_output (fd=<optimized out>) at > /usr/src/debug/crash-trace-command-3.0-4.el9.x86_64/trace.c:2588 > #3 ftrace_show (argc=919286707, argv=<optimized out>, argv=<optimized out>) at > /usr/src/debug/crash-trace-command-3.0-4.el9.x86_64/trace.c:1825 > #4 0x00000000005010de in exec_command () at main.c:892 > #5 0x0000000000500ed0 in main_loop () at main.c:839 > #6 0x000000000085590d in captured_main (data=<optimized out>) at main.c:1284 > #7 gdb_main (args=<optimized out>) at main.c:1313 > #8 0x0000000000855965 in gdb_main_entry (argc=<optimized out>, argv=<optimized out>) at main.c:1338 > #9 0x00000000005b3db7 in gdb_main_loop (argc=2, argv=0x7ffc5afb3ed8) at gdb_interface.c:81 > #10 0x0000000000500b8d in main (argc=3, argv=0x7ffc5afb3ed8) at main.c:720 > > when referring to sp->name: > > static int save_proc_kallsyms(int fd) > { > int i; > struct syment *sp; > > for (sp = st->symtable; sp < st->symend; sp++) > tmp_fprintf("%lx %c %s\n", sp->value, sp->type, sp->name); > > for (i = 0; i < st->mods_installed; i++) { > struct load_module *lm = &st->load_modules[i]; > > for (sp = lm->mod_symtable; sp <= lm->mod_symend; sp++) { > => if (!strncmp(sp->name, "_MODULE_", strlen("_MODULE_"))) > continue; > > where sp->name contains an odd address: > > (gdb) p sp->name > Cannot access memory at address 0x20047 > > As seen above, save_proc_kallsyms() refers to st->load_modules and its > position is behind the position where mod_symname_hash was added at: > > double val_hash_iterations; > struct syment *symname_hash[SYMNAME_HASH]; > struct syment *mod_symname_hash[SYMNAME_HASH]; > struct symbol_namespace kernel_namespace; > struct syment *ext_module_symtable; > struct syment *ext_module_symend; > long ext_module_symcnt; > struct symbol_namespace ext_module_namespace; > int mods_installed; > struct load_module *current; > struct load_module *load_modules; > > Signed-off-by: HATAYAMA Daisuke <d.hatayama@xxxxxxxxxxx> Acked-by: Kazuhito Hagio <k-hagio-ab@xxxxxxx> Lianbo, this is also needed for RHEL9 crash before GA. Thanks, Kazu > --- > defs.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/defs.h b/defs.h > index 7e2a16e..e9e8143 100644 > --- a/defs.h > +++ b/defs.h > @@ -2753,7 +2753,6 @@ struct symbol_table_data { > double val_hash_searches; > double val_hash_iterations; > struct syment *symname_hash[SYMNAME_HASH]; > - struct syment *mod_symname_hash[SYMNAME_HASH]; > struct symbol_namespace kernel_namespace; > struct syment *ext_module_symtable; > struct syment *ext_module_symend; > @@ -2780,6 +2779,7 @@ struct symbol_table_data { > ulong kaiser_init_vmlinux; > int kernel_symbol_type; > ulong linux_banner_vmlinux; > + struct syment *mod_symname_hash[SYMNAME_HASH]; > }; > > /* flags for st */ > -- > 2.31.1 > > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://listman.redhat.com/mailman/listinfo/crash-utility -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility