On Mon, 2005-10-31 at 17:24 -0500, Dave Anderson wrote: > > There is no simple way to add #if KERNEL_VERSION > 2.6.10 > > in the header file and leave the hardcoded values there ? > > > THIS_KERNEL_VERSION is based upon crash internal data variables in > the > kernel_table data structure that get initialized in kernel_init > (PRE_GDB) > based upon the contents of the kernel's "system_utsname" data > structure > read from memory or the dumpfile. > > I was mistaken in using the value of "_stext" as the qualifier, > though, > since the __START_KERNEL_map value of 0xffffffff80000000 is still the > same. > But there must be *some* difference in the symbol list that can be > used > to determine which set of address values to use. It could even be > just > the *existence* of some new kernel variable introduced as part of the > change to the new scheme. Doing an "nm -Bn" on the old and new > vmlinux files should yield something obvious. Okay. I will look around :) > > > > bt -t seems to better. > > > > crash> bt 3144 > > PID: 3144 TASK: ffff81011dd1e100 CPU: 0 COMMAND: "mingetty" > > #0 [ffff81011d6b9c68] schedule at ffffffff803b12b3 > > RIP: 000000377c7b85b2 RSP: 00007fffff87a110 RFLAGS: 00010246 > > RAX: 0000000000000000 RBX: ffffffff8010dc26 RCX: 00007fffff87a7b0 > > RDX: 0000000000000001 RSI: 00007fffff87a8c7 RDI: 0000000000000000 > > RBP: 00007fffff87aca0 R8: 00002aaaaaac9b00 R9: 0000000000000000 > > R10: 0000000000000001 R11: 0000000000000246 R12: 00007fffff87a900 > > R13: 0000000000502d20 R14: 0000000000000000 R15: 000000007c92d8c0 > > ORIG_RAX: 0000000000000000 CS: 0033 SS: 002b > > crash> bt -t 3144 > > PID: 3144 TASK: ffff81011dd1e100 CPU: 0 COMMAND: "mingetty" > > START: thread_return (schedule) at ffffffff803b12b3 > > [ffff81011d6b9d10] do_con_write at ffffffff802689da > > [ffff81011d6b9d80] schedule_timeout at ffffffff803b1e4e > > [ffff81011d6b9db0] _spin_lock_irqsave at ffffffff803b28ce > > [ffff81011d6b9dc0] add_wait_queue at ffffffff8014cf5c > > [ffff81011d6b9de0] read_chan at ffffffff8025d1f7 > > [ffff81011d6b9e48] default_wake_function at ffffffff80130c90 > > [ffff81011d6b9e78] default_wake_function at ffffffff80130c90 > > [ffff81011d6b9e90] tty_ldisc_deref at ffffffff802571c4 > > [ffff81011d6b9ed0] tty_read at ffffffff802575ee > > [ffff81011d6b9f10] vfs_read at ffffffff80183a46 > > [ffff81011d6b9f40] sys_read at ffffffff80183e03 > > [ffff81011d6b9f80] system_call at ffffffff8010dc26 > > RIP: 000000377c7b85b2 RSP: 00007fffff87a110 RFLAGS: 00010246 > > RAX: 0000000000000000 RBX: ffffffff8010dc26 RCX: 00007fffff87a7b0 > > RDX: 0000000000000001 RSI: 00007fffff87a8c7 RDI: 0000000000000000 > > RBP: 00007fffff87aca0 R8: 00002aaaaaac9b00 R9: 0000000000000000 > > R10: 0000000000000001 R11: 0000000000000246 R12: 00007fffff87a900 > > R13: 0000000000502d20 R14: 0000000000000000 R15: 000000007c92d8c0 > > ORIG_RAX: 0000000000000000 CS: 0033 SS: 002b > > crash> > > > > > I still don't understand what happens in > x86_64_low_budget_back_trace_cmd() > that causes the "bt" command to skip from the starting point in > schedule() > to the end, where it dumps the user-mode entry exception frame, > unless > the rsp has been bumped too high by the time it gets to this point: > > /* > * Walk the process stack. > */ > for (i = (rsp - bt->stackbase)/sizeof(ulong); > !done && (rsp < bt->stacktop); i++, rsp += sizeof(ulong)) > { > > ...and that conceivably may have something to do with the exception > stack > problem. It's hard to say without being there... I added lots of debug code while playing with it and forgot to clean it up properly. All problems went away after a cleanup. (stack trace issues, exception stack issues etc..) Thanks, Badari