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.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/901944

Title:
  gdbserver inside qemu does not stop on breakpoints

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/901944/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to