public inbox for archer@sourceware.org
 help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: Project Archer <archer@sourceware.org>, Oleg Nesterov <oleg@redhat.com>
Subject: Re: ptrace improvement ideas
Date: Mon, 07 Feb 2011 21:11:00 -0000	[thread overview]
Message-ID: <20110207211129.GA23277@host1.dyn.jankratochvil.net> (raw)
In-Reply-To: <20110203223905.D0C77180081@magilla.sf.frob.com>

Hi Roland,

the majority of the overhead should be solved by PTRACE_O_INHERIT, an idea for
a next optimization is to replace reading+parsing of "/proc/PID/xxx" text
files by a single syscall for that small binary value such as for:

	linux_proc_pending_signals (/proc/PID/status) -> now 2x sigset_t
	-> PTRACE_IS_SIGNUM_PENDING or PTRACE_GET_PENDING_SIGSET etc.
	(GDB is only interested in SIGINT from that sigset_t now.)

	linux_nat_core_of_thread_1 (/proc/%d/task/%ld/stat)
	-> PTRACE_GET_CPUCORE -> long return value as the CPU #


Also there could be PTRACE_SET_TGID_DEBUGREG to set debug registers for all
the TIDs of a PID (=TGID), even for those that are not stopped.

gdbserver now has to stop+resume each TID to change the hw watchpoints:
http://sourceware.org/bugzilla/show_bug.cgi?id=10729
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/gdbserver/linux-x86-low.c.diff?cvsroot=src&r1=1.20&r2=1.21

(issue 1) But what if some thread hits a hw watchpoint?  Changing the debug
registers on x86* will make the result no longer readable.

(issue 2) Also it must set atomically at least both the DR_CONTROL and one of
DR addresses, best to set atomically all the 6 writable DR registers.  But not
to set regular registers.  PTRACE_POKEUSER writes a single register and other
block writes cannot write to DR registers.

There is already AFAIK some abstraction of DR regiters inside kernel so maybe
userland could get access to this abstraction to resolve these two issues.



On Thu, 03 Feb 2011 23:39:05 +0100, Roland McGrath wrote:
[...]
> * PTRACE_O_INHERIT
[...]
> Its effect is that clones of the tracee inherit the
> ptrace attachedness and option settings of their parent.

It must explicitly require debug registers (hw watchpoints) inheritance.
Which happened before but it no longer happens in recent upstream kernels
(NOTABUG RH#660003).


[...]
> To get this information reliably,
> the debugger needs to use the waitid call instead of waitpid/wait4.

[nitpick] or PTRACE_GETSIGINFO after waitpid, as GDB does.



Thanks,
Jan

  parent reply	other threads:[~2011-02-07 21:11 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-03 22:39 Roland McGrath
2011-02-04 18:56 ` Oleg Nesterov
2011-02-04 18:58   ` Roland McGrath
2011-02-07 21:11 ` Jan Kratochvil [this message]
2011-02-08  1:58   ` Roland McGrath
2011-02-08 20:41     ` Jan Kratochvil
2011-02-09  2:48       ` Roland McGrath
2011-02-08 21:07     ` Oleg Nesterov
2011-02-08 23:18       ` hw_breakpoint userland interface Roland McGrath
2011-02-10 21:03         ` Oleg Nesterov
2011-02-10 21:14           ` Roland McGrath
2011-02-11 20:17             ` Oleg Nesterov
2011-02-10 20:00 ` ptrace improvement: PTRACE_O_INHERIT Oleg Nesterov
2011-02-11 19:24   ` Roland McGrath
2011-02-11 20:46     ` Oleg Nesterov
2011-02-12  0:59       ` Roland McGrath
2011-02-12 19:11         ` Oleg Nesterov
2011-02-14 19:31           ` Roland McGrath
2011-02-14 19:46             ` Oleg Nesterov
2011-02-15  0:36               ` Roland McGrath
2011-02-15 13:16                 ` Oleg Nesterov
2011-02-15 21:43                   ` Jan Kratochvil
2011-02-15 21:56                     ` Roland McGrath
2011-02-16 19:42                       ` Oleg Nesterov
2011-02-16 19:45                         ` Roland McGrath
2011-02-16 20:09                           ` Oleg Nesterov
2011-02-16 20:16                             ` Roland McGrath
2011-02-19 19:48                             ` Jan Kratochvil
2011-02-19 20:37                               ` Oleg Nesterov
2011-02-20  8:18                                 ` Jan Kratochvil
2011-02-20 21:05                                   ` Oleg Nesterov
2011-02-21 19:54                                 ` Roland McGrath
2011-02-22 19:39                                   ` Oleg Nesterov
2011-02-22 20:49                                     ` Roland McGrath
2011-02-22 21:10                                       ` Oleg Nesterov
2011-02-22 22:16                                         ` Roland McGrath
2011-02-21 19:44                               ` Roland McGrath
2011-02-15 22:02                     ` Roland McGrath
2011-02-16 16:02                       ` Jan Kratochvil
2011-02-16 18:28                         ` Roland McGrath
2011-02-16 20:00                           ` Oleg Nesterov
2011-02-16 20:07                             ` Roland McGrath
2011-02-16 20:32                               ` Oleg Nesterov
2011-02-16 19:48                       ` Oleg Nesterov
2011-02-16 20:02                         ` Roland McGrath
2011-02-16 20:15                           ` Oleg Nesterov
2011-02-16 20:31                             ` Roland McGrath
2011-02-16 21:04                               ` Oleg Nesterov
2011-02-16 21:51                                 ` Roland McGrath
2011-02-16 19:38                     ` Oleg Nesterov
2011-02-16 19:40                       ` Roland McGrath
2011-02-15 22:17                   ` Roland McGrath
2011-02-16 20:48                     ` Oleg Nesterov
2011-02-16 11:31 ` ptrace improvement ideas (QPassSignals) Jan Kratochvil
2011-02-16 18:36   ` Roland McGrath
2011-02-16 20:21     ` Oleg Nesterov
2011-02-18 20:24       ` Oleg Nesterov

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=20110207211129.GA23277@host1.dyn.jankratochvil.net \
    --to=jan.kratochvil@redhat.com \
    --cc=archer@sourceware.org \
    --cc=oleg@redhat.com \
    --cc=roland@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).