You see nonsensical backtraces because people persist in using the oops
decode option of klogd which is broken when faced with modules. Turn
off klogd oops (klogd -x) and you get a raw backtrace which ksymoops
can handle. Guess why these entries are in /proc/ksyms?
c48a2300 __insmod_3c589_cs_S.bss_L4 [3c589_cs]
c48a0000 __insmod_3c589_cs_O/lib/modules/2.4.17-xfs/kernel/drivers/net/pcmcia/3c589_cs.o_M3C332CFF_V132113 [3c589_cs]
c48a22a0 __insmod_3c589_cs_S.data_L96 [3c589_cs]
c48a1820 __insmod_3c589_cs_S.rodata_L1152 [3c589_cs]
c48a0060 __insmod_3c589_cs_S.text_L6064 [3c589_cs]
ksymoops uses the __insmod entries to work out exactly where each
module is, it gives an accurate backtrace with modules. man insmod for
details.
Kernel debuggers like kgdb and kdb use kallsyms which has full support
for modules. kgdb can also use the __insmod entries in /proc/ksyms to
tell gdb where each module was loaded.
ksymoops has a save map option (-s) which writes out the combined
system map, including the kernel and all symbols from all modules.
Sure, a dynamic system requires a little more work, but it has all been
done. Just kill the broken klogd code so it stops corrupting log data.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/