[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Different esps



> about line 329 in traps.c:
> 
>   fault_in_hypervisor:
> +       printk("fault_in_hypervisor 2\n");
> +       printk("dom %d : esp1 %08lx, ss %08lx\n",current->domain, 
> current->thread.esp1, current->thread.ss1);
> +
> +       execution_context_t ctxt;
> +    memcpy(&ctxt,
> +           get_execution_context(), 
> +           sizeof(execution_context_t));
> +
> +       printk("eip %p esp %p eip %p  addr %p flags %x\n", ctxt.eip, 
> ctxt.esp, gtb->eip, addr, ctxt.eflags);

The EIP/ESP values you are printing aren't up to date. You should be
printing regs->eip and regs->esp.

Also something like:
 struct pt_regs *guest_regs = (struct pt_regs *)(current->thread.esp1-1);
 <print guest_regs->esp, guest_regs->eip>

> 0xc3a91ff8 appears to be where ctxt.esp is pointing if you push some
> values. The dual 0 eips worry me as well, I have not registered any
> event-callbacks for the domain, perhaps that is the reason? But should I
> not be allowed to run without registering for interrupts in a brand-new
> domain? To me this looks like an interrupt-delivery gone bad.

Maybe an exception of some kind? Did you fill in the trap_table
(virtual IDT) in full_execution_context?

 -- Keir


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.