From: Daniel Jacobowitz <drow@false.org>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Doug Evans <dje@google.com>,
GDB Patches <gdb-patches@sourceware.org>,
mark.kettenis@xs4all.nl, Roland McGrath <roland@redhat.com>
Subject: Re: [patch] Fix Linux attach to signalled/stopped processes
Date: Thu, 10 Apr 2008 15:39:00 -0000 [thread overview]
Message-ID: <20080410153735.GD21662@caradoc.them.org> (raw)
In-Reply-To: <20080401223012.GA14076@host0.dyn.jankratochvil.net>
[Roland, job control question for you in here. I'm not sure who else
to ask...]
On Wed, Apr 02, 2008 at 12:30:12AM +0200, Jan Kratochvil wrote:
> The condition whether the detached process (previously attached as stopped)
> should be left stopped or running is not intuitive there now, it is Red Hat
> patches backward compatible but IMO it should rather ask the user (with
> a default of leaving it stopped).
Yes, I don't like the changed behavior of detach. I think it would be
more intuitive if detach always resumed, and the disconnect command
worked for native debugging. Although that leaves gdbserver out in
the cold (disconnect already has meaning there). So maybe it should
be detach --stopped? For the FSF version we can address this
separately from the attach bug.
I have another idea to solve the attach problem that does not involve
redelivering signals - use WNOHANG in the initial wait if /proc
already shows the process as stopped. There shouldn't be a race if
this is done after we PTRACE_ATTACH.
But I got hung up trying to figure out what was going on with
testing...
If I run attach-stopped from your testcase in a shell, then send it a
stop signal using kill from another window, stock GDB fails to attach
to it - just as I'd expect, that's the bug we're discussing. But if I
run the attach-stopped.exp test script this part works fine. It turns
out that if we spawn the program in expect (even at the expect1.1>
prompt, by hand) instead of using a shell with job control, GDB can
attach to it just fine.
In both cases the kernel reports the process as stopped. The
difference in ps is the "s+":
drow 28162 0.0 0.0 6152 376 pts/50 Ts+ 11:19 0:00 ./gdb.threads/attach-stopped
drow 28179 0.0 0.0 6152 376 pts/51 T 11:20 0:00 ./gdb.threads/attach-stopped
There's no difference in /proc/pid/status at all, besides the PIDs.
The "s" means session leader, the "+" means foreground process group.
28162 is the one run from expect.
Any idea why this makes a difference? Kernel version is 2.6.24, if
that matters. If we could get the foreground process group behavior
all the time, then we don't even need to change GDB. But I don't know
if that's right since I don't understand how it occurs.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2008-04-10 15:37 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-31 22:07 Doug Evans
2008-04-02 0:01 ` Jan Kratochvil
2008-04-02 0:07 ` Roland McGrath
2008-04-10 15:30 ` Daniel Jacobowitz
2008-04-10 15:37 ` Jan Kratochvil
2008-04-10 15:49 ` Daniel Jacobowitz
2008-04-10 16:00 ` Jan Kratochvil
2008-04-10 19:59 ` Daniel Jacobowitz
2008-04-10 15:39 ` Daniel Jacobowitz [this message]
2008-04-10 16:00 ` Jan Kratochvil
2008-04-10 19:48 ` Daniel Jacobowitz
2008-04-11 8:46 ` Roland McGrath
2008-04-11 17:46 ` Jan Kratochvil
2008-04-11 19:01 ` Daniel Jacobowitz
2008-04-12 7:58 ` Roland McGrath
2008-04-14 15:09 ` Daniel Jacobowitz
2008-04-14 15:31 ` Daniel Jacobowitz
2008-04-15 22:14 ` Jan Kratochvil
2008-05-01 18:50 ` Daniel Jacobowitz
2008-07-05 8:48 ` Jan Kratochvil
2008-07-05 13:48 ` Daniel Jacobowitz
2008-09-24 12:46 ` Andreas Schwab
2008-09-26 3:52 ` Jan Kratochvil
2008-09-26 13:00 ` Daniel Jacobowitz
2008-09-28 11:43 ` Jan Kratochvil
2008-09-28 14:58 ` Daniel Jacobowitz
2008-04-15 8:14 ` Roland McGrath
2008-04-15 13:02 ` Daniel Jacobowitz
2008-04-16 7:01 ` Roland McGrath
2008-04-11 22:20 ` Daniel Jacobowitz
2008-04-11 22:21 ` Pedro Alves
2008-04-11 22:25 ` Daniel Jacobowitz
2008-04-12 0:02 ` Pedro Alves
2008-04-12 0:19 ` Pedro Alves
2008-04-13 9:35 ` Pedro Alves
2008-04-13 13:40 ` Pedro Alves
2008-04-12 16:38 ` Roland McGrath
2008-04-12 16:43 ` Eli Zaretskii
-- strict thread matches above, loose matches on Subject: below --
2007-06-06 14:34 Jan Kratochvil
2007-06-11 13:44 ` Jan Kratochvil
2007-06-15 18:02 ` Mark Kettenis
2007-06-26 22:40 ` Jan Kratochvil
2007-06-27 0:13 ` Mark Kettenis
2007-06-27 11:59 ` Jan Kratochvil
2007-06-27 18:30 ` Mark Kettenis
2007-06-30 11:45 ` Jan Kratochvil
2007-06-30 11:57 ` Eli Zaretskii
2007-06-30 17:15 ` Jan Kratochvil
2007-06-30 18:52 ` Eli Zaretskii
[not found] ` <200706301852.l5UIq8ek010536@brahms.sibelius.xs4all.nl>
2007-07-01 3:17 ` Eli Zaretskii
2007-07-01 9:34 ` Mark Kettenis
2007-07-01 10:03 ` Jan Kratochvil
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=20080410153735.GD21662@caradoc.them.org \
--to=drow@false.org \
--cc=dje@google.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=mark.kettenis@xs4all.nl \
--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