Comment 3 for bug 901944

Revision history for this message
agonified (hakanakkan) wrote :

Guest is a 2.6.38-10-server x86_64 kernel with ubuntu patches applied (configured to have some set of modules built-in + debugging symbols + non-preemptive + HZ=100). I can provide the config file if necessary. Root fs contains a minimal 10.04 server.

Here is how I launch the VM:
$ qemu-system-x86_64 -s -m 512 -drive file="root1.qcow2" -kernel ../../linux-2.6.38/arch/x86/boot/bzImage -append " console=tty1 root=/dev/sda1 ro "

VM launches fine and drops to a login shell. Then I start gdb and connect to the server:
$ gdb ../../linux-2.6.38/vmlinux
{Init messages...}
Reading symbols from ../../linux-2.6.38/vmlinux...done.
(gdb) target remote :1234
Remote debugging using :1234
0xffffffff81076a0b in pvclock_clocksource_read (src=0xffffffff82201fd8) at arch/x86/kernel/pvclock.c:106
106 if ((valid_flags & PVCLOCK_TSC_STABLE_BIT) &&
(gdb)

At this point the VM is unresponsive. Then I set a breakpoint at schedule() (which should be called 100 times per second) and let the VM go.

(gdb) b schedule
Breakpoint 1 at 0xffffffff81b2b3f0: file kernel/sched.c, line 3946.
(gdb) c
Continuing.

I would expect the debugger to hit the breakpoint but it never does. VM is fully functional at this point. Then I pause the VM again with ctrl+c and print the stack trace:

^C
Program received signal SIGINT, Interrupt.
0xffffffff81076a0b in pvclock_clocksource_read (src=0xffffffff82201fd8) at arch/x86/kernel/pvclock.c:106
106 if ((valid_flags & PVCLOCK_TSC_STABLE_BIT) &&
(gdb) where
#0 0xffffffff81076a0b in pvclock_clocksource_read (src=0xffffffff82201fd8) at arch/x86/kernel/pvclock.c:106
#1 0xffffffff81053255 in arch_safe_halt () at /DOCS/nmc/linux-2.6.38/arch/x86/include/asm/paravirt.h:110
#2 default_idle () at arch/x86/kernel/process.c:391
#3 0xffffffff8104921b in cpu_idle () at arch/x86/kernel/process_64.c:139
#4 0xffffffff81ad9cce in device_irq_init (pdata=0xffffffff824cdfa0, chip=0xffffffff824c99c0) at drivers/mfd/88pm860x-core.c:508
#5 device_8607_init (chip=0xffffffff824c99c0, i2c=<optimized out>, pdata=0xffffffff824cdfa0) at drivers/mfd/88pm860x-core.c:682
#6 0xffffffff8247bc6f in start_kernel () at init/main.c:734
#7 0xffffffff8247b347 in x86_64_start_reservations (real_mode_data=<optimized out>) at arch/x86/kernel/head64.c:124
#8 0xffffffff8247b44d in x86_64_start_kernel (real_mode_data=0xffff88001fffb880 " console=tty1") at arch/x86/kernel/head64.c:94
#9 0x0000000000000000 in ?? ()
(gdb)

I see the same stack trace every single time I stop the VM; while sitting idle on the console, while running a busy-loop application, while doing net/disk IO. I also set other breakpoints at frequently executed kernel functions like do_timer() but the VM never stops at these breakpoints.

Please let me know if more information is necessary.