Date: Wed, 15 Sep 2004 18:18:04 -0400 From: Stephan Uphoff <ups@tree.com> To: Andrew Gallatin <gallatin@cs.duke.edu> Cc: Kip McAtee <kmcatee@firetide.com> Subject: Re: remote kernel gdb stack frames corrupted after breakpoint or step Message-ID: <1095286684.25502.5.camel@palm.tree.com> In-Reply-To: <16712.47539.384362.207478@grasshopper.cs.duke.edu> References: <200409151104.23912.kmcatee@firetide.com> <16712.47539.384362.207478@grasshopper.cs.duke.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
I wrote a patch that should fix the problem for i386. http://www.freebsd.org/cgi/query-pr.cgi?pr=71715 Stephan On Wed, 2004-09-15 at 17:52, Andrew Gallatin wrote: > Kip McAtee writes: > > Greetings- > > > > I'm building on 5.3-BETA4 (and 6.0 current) > > with gdb (and kgdb) 6.1.1. > > > > I can get into the remote kernel debugger with > > sysctl debug.kdb.enter=1 > > > > I can set a breakpoint and continue. > > When it hits the breakpoint I get: > > > > Breakpoint 2, wakeup (ident=0xc0c0f9e8) at ../../../kern/kern_synch.c:253 > > 253 sleepq_broadcast(ident, SLEEPQ_MSLEEP, -1); > > (kgdb) c > > Continuing. > > > > Program received signal SIGSEGV, Segmentation fault. > > > > Looking at the backtrace implies that the stack frames > > are not displayed correctly. I'm setting: > > > > FWIW, I see the same thing when continuing from breakpoints in > RELENG_5 via ddb. I've appended a log from my serial console. > > Interestingly, dropping into the debugger via break on console works > like a charm, its only inserted breakpoints which don't work. > I think this started happening after the ddb->kdb conversion. > > Drew > > [send halt on serial console] > db> break sched_switch > db> c > [thread 100004] > Stopped at sched_switch+0x1: movl %esp,%ebp > db> tr > sched_switch(1,0,0,0,0) at sched_switch+0x1 > idle_proc(0,e3f78d48,10e90,10e98,10ea0) at idle_proc+0x143 > fork_exit(c04fa329,0,e3f78d48) at fork_exit+0x80 > fork_trampoline() at fork_trampoline+0x8 > --- trap 0x1, eip = 0, esp = 0xe3f78d7c, ebp = 0 --- > db> c > > > kernel trap 12 with interrupts disabled > > > Fatal trap 12: page fault while in kernel mode > cpuid = 0; apic id = 00 > fault virtual address = 0x0 > fault code = supervisor read, page not present > instruction pointer = 0x8:0xc0527256 > stack pointer = 0x10:0xe3f78c8c > frame pointer = 0x10:0xe3f78c9c > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, def32 1, gran 1 > processor eflags = resume, IOPL = 0 > current process = 12 (idle: cpu0) > [thread 100004] > Stopped at sched_switch+0xe: movl 0(%ebx),%edx > db> tr > sched_switch(0,10,44096318,47c326eb,ffc00014) at sched_switch+0xe > end(74c085d0,b816,a3640000,c,89d0558b) at 0xc1562640 > db> call cpu_reset > cpu_reset called on cpu#0 > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1095286684.25502.5.camel>