All of lore.kernel.org
 help / color / mirror / Atom feed
From: Antony Saba <Antony.Saba@mandiant.com>
To: George Dunlap <George.Dunlap@eu.citrix.com>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Steven Maresca <steve@zentific.com>,
	"xen-users@lists.xen.org" <xen-users@lists.xen.org>
Subject: Re: [Xen-users] xc_hvm_inject_trap() failing for int3 traps under Xen 4.2.2
Date: Mon, 10 Jun 2013 16:57:10 +0000	[thread overview]
Message-ID: <51B60565.1080903@mandiant.com> (raw)
In-Reply-To: <CAFLBxZbSF4qyQwWD1z5dNcnesUV2Fnc19h=qvh+9Z-+_OuFHBA@mail.gmail.com>

On 06/10/2013 05:29 AM, George Dunlap wrote:
> On Fri, Jun 7, 2013 at 4:51 PM, Steven Maresca <steve@zentific.com> wrote:
>> Tony,
>>
>> I can confirm INT3 re-injection does work on 4.2.x and 4.3, but the
>> problem you observed is certainly present.
>>
>> As suggested, it was necessary when invoking xc_hvm_inject_trap to
>> specify the 1-byte instruction length for 0xCC (without which the VM
>> was intentionally crashed by Xen).
>>
>> In this case, there's no need to inspect the actual instruction
>> referenced by the IP because it seems the trap is only fired for the
>> one-byte variant (0xCD03 of course works properly, but no event is
>> emitted).
>>
>> Mirroring your experience with 4.1.2, for my testing on 4.2+ the
>> return of xc_hvm_inject_trap is also always non-zero even for
>> successful re-injection..whether that's intended is another question.
>>
>> Steve
>>
>> NOTE: I would definitely consider it a bug that the xen-access.c
>> example crashes guests when attempting to use the INT3
>> mode...non-critical for most users, but nevertheless.
> 
> I'm having a bit of trouble finding the conclusion here.
> 
> So it seems the problem is that if a *guest* is doing int3
> instructions, that will interfere with the ability of the debugger to
> use int3 to do introspection -- is that right?
> 
Yes, that is one scenario.  The one I was experiencing was some
(apparently legitimate) background process on a Windows 7 x64 guest that
just always executes an int3 when it runs.

I'll try to summarize, someone please correct me if I'm wrong.  There
are 2 things going on here:

1) The patch previously posted by AP is the correct way to call
xc_hvm_inject_trap() for int 3 (0xcc).  That is, the instruction_length
parameter must be set to 1.

2) xc_hvm_inject_trap() always returns a negative value, even when there
is not a problem and the guest receives the trap as expected.  There
hasn't been a clarification as to whether it's supposed to return
non-negative, but one would assume that it should because of the way the
xen-access.c example checks for it.

There was an error in my modifications to xen-access.c to ignore the
error from xc_hvm_inject_trap(), which was causing resume_page() to not
get called, resulting in a frozen guest on my machines.  Thanks again
for the previous responses; I did get it working without freezing the guest.

> If anyone on this thread were able to make and test a proper fix, I'm
> sure we would all appreciate it. :-)
> 
> At this point it would definitely not be a release blocker, but we
> would obviously like to have it fixed.

-Tony

-- 
Antony Saba, antony.saba@mandiant.com

  reply	other threads:[~2013-06-10 16:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <51AE5D82.8090608@mandiant.com>
2013-06-07  0:16 ` [Xen-users] xc_hvm_inject_trap() failing for int3 traps under Xen 4.2.2 AP
2013-06-07 15:51   ` Steven Maresca
2013-06-07 17:43     ` Antony Saba
2013-06-10 11:29     ` George Dunlap
2013-06-10 16:57       ` Antony Saba [this message]
2013-06-10 18:36         ` Tim Deegan
2013-06-15 14:51           ` Antony Saba
2013-06-20 10:33             ` Tim Deegan
2013-06-20 11:19               ` Keir Fraser
2013-06-21 14:45                 ` George Dunlap
     [not found]               ` <CAGU+auvzXuN4QWzpnpBYt724EMd_FM4Wdx2nKcyEmroLvVKO_Q@mail.gmail.com>
2013-06-20 21:44                 ` Aravindh Puthiyaparambil (aravindp)
2013-06-27  9:49                   ` Tim Deegan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51B60565.1080903@mandiant.com \
    --to=antony.saba@mandiant.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=steve@zentific.com \
    --cc=xen-devel@lists.xen.org \
    --cc=xen-users@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.