Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Nov 2019 19:13:08 -0600
From:      Kyle Evans <kevans@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all <svn-src-all@freebsd.org>,  svn-src-head <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r350017 - in head: lib/libc/sys sys/kern sys/sys tests/sys/kern
Message-ID:  <CACNAnaFxPnrLoNFxoFxvQfVJwTCzF=je4-0azCD11W7WX2OaSw@mail.gmail.com>
In-Reply-To: <8b7be4f7-b8df-6951-5faa-7d35795a6a4c@FreeBSD.org>
References:  <201907152148.x6FLm3EL068478@repo.freebsd.org> <CACNAnaGXqFo2Q1yFqYWk_pet0jYS6g11wSoOvCMT%2BEy7phP7eA@mail.gmail.com> <8b7be4f7-b8df-6951-5faa-7d35795a6a4c@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 26, 2019 at 6:18 PM John Baldwin <jhb@freebsd.org> wrote:
>
> On 11/25/19 11:01 AM, Kyle Evans wrote:
> > On Mon, Jul 15, 2019 at 4:48 PM John Baldwin <jhb@freebsd.org> wrote:
> >>
> >> Author: jhb
> >> Date: Mon Jul 15 21:48:02 2019
> >> New Revision: 350017
> >> URL: https://svnweb.freebsd.org/changeset/base/350017
> >>
> >> Log:
> >>   Add ptrace op PT_GET_SC_RET.
> >>
> >>   This ptrace operation returns a structure containing the error and
> >>   return values from the current system call.  It is only valid when a
> >>   thread is stopped during a system call exit (PL_FLAG_SCX is set).
> >>
> >>   The sr_error member holds the error value from the system call.  Note
> >>   that this error value is the native FreeBSD error value that has _not_
> >>   been translated to an ABI-specific error value similar to the values
> >>   logged to ktrace.
> >>
> >>   If sr_error is zero, then the return values of the system call will be
> >>   set in sr_retval[0] and sr_retval[1].
> >>
> >>   Reviewed by:  kib
> >>   MFC after:    1 month
> >>   Sponsored by: DARPA
> >>   Differential Revision:        https://reviews.freebsd.org/D20901
> >>
> >> Modified:
> >>   head/lib/libc/sys/ptrace.2
> >>   head/sys/kern/sys_process.c
> >>   head/sys/sys/ptrace.h
> >>   head/tests/sys/kern/ptrace_test.c
> >>
> >
> > Hey John,
> >
> > Any objection to MFC'ing this to stable/12 at least? I've found this
> > to be almost-required in the ptrace user I've been working on
> > lately... I certainly ripped out plenty of hair before realizing that
> > it wasn't detecting error returns properly.
>
> Hmm, I did have it in my queue, but not the most urgent priority.   Are
> you using truss or something else?  You can achieve the same thing without
> the new op, it just requires arch-specific code to fetch the error status
> and return value from registers.
>

Alrighty- that's good to hear. =-)

It's actually an out-of-tree ptrace(2) user that's executing syscalls
in the process it's attaching to. It works most of the time because
the syscalls it's executing don't generally fail (mmap a single page
was the only use until I started dorking with it), so it's not quite
worth the overhead of adding the arch-specific bits to detect error
(it grabs the return value, at least) -- this is generally just a
small nicety for those of us debugging it.

Thanks,

Kyle Evans



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACNAnaFxPnrLoNFxoFxvQfVJwTCzF=je4-0azCD11W7WX2OaSw>