On Thu, Sep 02, 2010 at 03:46:00PM +0800, hutao(a)cn.fujitsu.com wrote:
 Hi,
 
 I got a problem where it seemed crash got a bad backtrace.
 The problem occurred under the following conditions:
 On a qemu guest system loading a module that stuck at
 the init function(say, call a function that did deadlooping),
 then dumped the guest by `virsh dump vm dumpfile', and run
 crash on the dumpfile.
 
 The module is:
 
 ---
 #include <linux/module.h>
 
 int endless_loop(void)
 {
 	printk("endless loop\n");
 	while (1);
 
 	return 0;
 }
 
 int __init endless_init(void)
 {
 	endless_loop();
 
 	return 0;
 }
 module_init(endless_init);
 
 MODULE_LICENSE("GPL");
 ---
 
 crash bt command got:
 
 crash> bt -a
 PID: 0      TASK: ffffffff81648020  CPU: 0   COMMAND: "swapper"
  #0 [ffffffff81601e08] schedule at ffffffff813e8a49
  #1 [ffffffff81601e18] apic_timer_interrupt at ffffffff8100344e
  #2 [ffffffff81601ea0] need_resched at ffffffff8100970c
  #3 [ffffffff81601eb0] default_idle at ffffffff81009f6b
  #4 [ffffffff81601ec0] cpu_idle at ffffffff81001bf5
 
 PID: 1088   TASK: ffff88001dda2d60  CPU: 1   COMMAND: "insmod"
  #0 [ffff88001e751dc8] schedule at ffffffff813e8a49
  #1 [ffff88001e751dd0] schedule at ffffffff813e8aec
  #2 [ffff88001e751e80] preempt_schedule_irq at ffffffff813e8c90
  #3 [ffff88001e751e90] retint_kernel at ffffffff813eab86
  #4 [ffff88001e751f20] do_one_initcall at ffffffff81000210
  #5 [ffff88001e751f50] sys_init_module at ffffffff8106b7ca
  #6 [ffff88001e751f80] system_call_fastpath at ffffffff81002a82
     RIP: 00007f761bb58b7a  RSP: 00007fff67a43120  RFLAGS: 00010206
     RAX: 00000000000000af  RBX: ffffffff81002a82  RCX: 0000000000020010
     RDX: 0000000000b96010  RSI: 00000000000163da  RDI: 0000000000b96030
     RBP: 0000000000b96010   R8: 0000000000010011   R9: 0000000000080000
     R10: 00007f761bb4b140  R11: 0000000000000202  R12: 00000000000163da
     R13: 00007fff67a44985  R14: 00000000000163da  R15: 0000000000b96010
     ORIG_RAX: 00000000000000af  CS: 0033  SS: 002b
 
 Does it lose some function calls between do_one_initcall and retint_kernel?
 (endless_loop <- endless_init)
  
In addition, if we don't stick in the init function (there is still a deadloop
somewhere in module but triggered by, say, reading a /proc file) then the backtrace
outputed by crash is correct.
 
 -- 
 Thanks,
 Hu Tao
 
 --
 Crash-utility mailing list
 Crash-utility(a)redhat.com
 
https://www.redhat.com/mailman/listinfo/crash-utility 
-- 
Thanks,
Hu Tao