Re: [RFC PATCH] New SA_NOPRNOTIF sigaction flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 27, 2005 at 03:55:26PM -0600, Davda, Bhavesh P (Bhavesh) wrote:
> > On Tue, Sep 27, 2005 at 10:24:23AM -0600, Davda, Bhavesh P 
> > (Bhavesh) wrote:
> > > About the priority inversion and running the debugger at 
> > higher priority
> > > then the debuggee, that's a moot point. You're still doing too many
> > > pointless context switches to the debugger only to do 
> > nothing and switch
> > > back to the debuggee.
> > 
> > Depending on your debugger, they may not be pointless.
> 
> 
> Sorry for reiterating this, but in certain cases, yes, the context
> switch to the debugger just to have it ignore the SIGCHLD for that
> signal is pointless.

Note, this is a property of the debugging session, not a property of
the debuggee.  The debuggee can not say "no possible debugger will ever
be interested in this signal"; it doesn't make sense.

> > > Besides, putting this responsibility (ignore SIGCHLDs for 
> > signal X from
> > > Task Y) in the debugger requires the debugger to have 
> > information about
> > > the debuggee, like Task Y is special for handling signal X, and I'm
> > > going to ptrace() ignore SIGCHLD's from Task Y.
> > > 
> > > See where I'm going with this?
> > 
> > Hint: your debugger already needs to know this.  GDB already does.  It
> > has a list of signals not to bother stopping or displaying to 
> > the user.
> > SIGCHLD is on it by default.  If not, you'd see the debugger prompt
> > after each one of these context switches.
> > 
> 
> That is under user control of the person using the debugger. What I was
> talking about is control in the debuggee process/developer to say that I
> would like to spare the unnecessary overhead of notifying the debugger
> that a specific signal is being delivered to me. 
> 
> By the time GDB decides to ignore the SIGCHLD, you've already incurred
> the overhead of notifying GDB and context switching into it. Then GDB,
> in userspace, has to waitpid(), look at WIFSTOPPED(status),
> WSTOPSIG(status) and then decide to do nothing and ptrace(PTRACE_CONT)
> if the signal was one of the ignored signals. Lots of unnecessary
> overhead in this case.

Yes, I entirely understand what you're saying.  I feel like you're not
reading my responses.  GDB _already has a list of signals it does not
care about_.  If ptrace permitted, it could tell the kernel not to
context switch to deliver those signals.  In advance!  That's a
debugger-driven solution to your problem.

I'm not arguing out of theory here.  I've implemented this mechanism
before in other contexts, for instance to prevent the remote protocol
overhead for ignored signals when using gdb with gdbserver.

-- 
Daniel Jacobowitz
CodeSourcery, LLC
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux