This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Patch to correct problem with 'detach' on Tru64
- From: Michael Snyder <msnyder at redhat dot com>
- To: Hilfinger at otisco dot mckusick dot com
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 10 Sep 2002 17:14:40 -0700
- Subject: Re: [RFA] Patch to correct problem with 'detach' on Tru64
- Organization: Red Hat, Inc.
- References: <200206050826.BAA24425@otisco.McKusick.COM>
"Paul N. Hilfinger" wrote:
>
> We have found that the patch below fixes a problem on the Tru64 target
> (OSF5.1). The sequence of commands
>
> (gdb) attach <pid>
> (gdb) break foo
> (gdb) cont
> ... Breakpoint hit
> (gdb) detach
>
> continues the inferior, only to have it crash immediately with a SIGTRAP
> signal. The fix appears to be to clear the current signal (currently, the
> comment says "clear the signal", but the code clears the pending FAULT.
>
> By the way, in looking at the code, I was left with a few questions about
> this command on all targets:
>
> a) Why is the optional argument to detach (a signal) undocumented?
> b) Was it, after all, intended that the current signal be left unchanged
> when the argument to detach is "0" or defaulted?
>
> P. Hilfinger
> ACT, Inc.
Committed. Forgive the delay, I guess I let this slip thru the cracks.
>
> 2002-06-05 Paul N. Hilfinger <hilfingr@otisco.mckusick.com>
>
> * procfs.c (do_detach): Clear current signal, not just fault. Corrects
> problem with breakpoint trap signal leaking to detached process on
> Tru64.
>
> Index: gdb/procfs.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/procfs.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 procfs.c
> --- gdb/procfs.c 14 Feb 2002 01:57:36 -0000 1.37
> +++ gdb/procfs.c 5 Jun 2002 08:04:13 -0000
> @@ -3623,6 +3623,9 @@ do_detach (int signo)
> if (!proc_clear_current_fault (pi))
> proc_warn (pi, "do_detach, clear_current_fault", __LINE__);
>
> + if (signo == 0 && !proc_clear_current_signal (pi))
> + proc_warn (pi, "do_detach, clear_current_signal", __LINE__);
> +
> if (!proc_set_run_on_last_close (pi))
> proc_warn (pi, "do_detach, set_rlc", __LINE__);
> }