|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: pdb entered even when set to none
oops. good point. the alternative is to always run with
pdb initialized :)
i'll check in a fix later this morning.
.a
-- begin message
In traps.c pdb_handle_exception is called on an int3:
asmlinkage void do_int3(struct pt_regs *regs, long error_code)
{
struct task_struct *p = current;
struct guest_trap_bounce *gtb =
guest_trap_bounce+smp_processor_id();
trap_info_t *ti;
if ( pdb_handle_exception(3, regs) == 0 )
return;
<...>
It in turn goes through some elaborate checks that don't evaluate to
true when FreeBSD panics:
<...>
if ( exceptionVector == 3 &&
(xen_regs->xcs & 3) == 3 &&
xen_regs->eip != pdb_system_call_next_addr + 1)
{
TRC(printf("pdb: user bkpt (0x%x) at 0x%x:0x%lx:0x%lx\n",
exceptionVector, xen_regs->xcs & 3, cr3,
xen_regs->eip));
return 1;
}
/*
* If PDB didn't set the breakpoint, is not single stepping,
* is not entering a system call in a domain,
* the user didn't press the magic debug key,
* then we don't handle the exception.
*/
bkpt = pdb_bkpt_search(cr3, xen_regs->eip - 1);
if ( (bkpt == NULL) &&
!pdb_stepping &&
!pdb_system_call &&
xen_regs->eip != pdb_system_call_next_addr + 1 &&
(exceptionVector != KEYPRESS_EXCEPTION) &&
xen_regs->eip < 0xc0000000) /* xenolinux for
now! */
{
TRC(printf("pdb: user bkpt (0x%x) at 0x%lx:0x%lx\n",
exceptionVector, cr3, xen_regs->eip));
return 1;
}
<...>
As far as I can tell, what you should be doing is returning 1
immediately if pdb_initialized is equal to zero.
Thanks.
-Kip
-- end message
-------------------------------------------------------
This SF.Net email is sponsored by: GNOME Foundation
Hackers Unite! GUADEC: The world's #1 Open Source Desktop Event.
GNOME Users and Developers European Conference, 28-30th June in Norway
http://2004/guadec.org
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel
|
|
|
|
|