[lkml]   [2011]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 08/10] ptrace: participate in group stop from ptrace_stop() iff the task is trapping for group stop
    Currently, ptrace_stop() unconditionally participates in group stop
    bookkeeping. This is unnecessary and inaccurate. Make it only
    participate if the task is trapping for group stop - ie. if @why is
    CLD_STOPPED. As ptrace_stop() currently is not used when trapping for
    group stop, this equals to disabling group stop participation from

    A visible behavior change is increased likelihood of delayed group
    stop completion if the thread group contains one or more ptraced

    This is to preapre for further cleanup of the interaction between
    group stop and ptrace.

    Signed-off-by: Tejun Heo <>
    Cc: Oleg Nesterov <>
    Cc: Roland McGrath <>
    kernel/signal.c | 9 ++++++---
    1 files changed, 6 insertions(+), 3 deletions(-)

    diff --git a/kernel/signal.c b/kernel/signal.c
    index 7527778..2e20dad 100644
    --- a/kernel/signal.c
    +++ b/kernel/signal.c
    @@ -1694,10 +1694,13 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)

    - * If there is a group stop in progress,
    - * we must participate in the bookkeeping.
    + * If @why is CLD_STOPPED, we're trapping to participate in a group
    + * stop. Do the bookkeeping. Note that if SIGCONT was delievered
    + * while siglock was released for the arch hook, PENDING could be
    + * clear now. We act as if SIGCONT is received after TASK_TRACED
    + * is entered - ignore it.
    - if (current->group_stop & GROUP_STOP_PENDING)
    + if (why == CLD_STOPPED && (current->group_stop & GROUP_STOP_PENDING))

    current->last_siginfo = info;

     \ /
      Last update: 2011-01-28 16:11    [W:0.021 / U:45.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site