lkml.org 
[lkml]   [2007]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [BUG] signal: multithread program returns with wrong errno on receiving SIGSTOP
    On 05/28, Satoru Takeuchi wrote:
    >
    > At Mon, 28 May 2007 11:07:53 +0400,
    > Oleg Nesterov wrote:
    > >
    > > drivers/char/n_tty.c:job_control()
    > >
    > > kill_pgrp(task_pgrp(current), SIGTTIN, 1);
    > > return -ERESTARTSYS;
    > >
    > > This is wrong. kill_pgrp()->__group_send_sig_info() sends SIGTTIN
    > > to the thread group, but can choose any sub-thread as a target for
    > > signal_wake_up().
    > >
    > > This means we return ERESTARTSYS, but signal_pending() != true, bug.
    > >
    > > Satoru, could you re-test with the untested patch below?
    >
    > I tested this patch on my ia64 box and it works fine.

    Thanks! A quick grep shows that tty_check_change() may have the same problem.

    > # Since I don't know anything about tty driver, I can't determine its
    > # adequacy immediately, sorry.

    /dev/tty is a black magic to me too. I'll send the patch later unless
    maintainers have any objections.

    > > --- t/drivers/char/n_tty.c~ 2007-04-05 12:18:26.000000000 +0400
    > > +++ t/drivers/char/n_tty.c 2007-05-28 10:57:58.000000000 +0400
    > > @@ -1191,6 +1191,7 @@ static int job_control(struct tty_struct
    > > is_current_pgrp_orphaned())
    > > return -EIO;
    > > kill_pgrp(task_pgrp(current), SIGTTIN, 1);
    > > + set_thread_flag(TIF_SIGPENDING);
    > > return -ERESTARTSYS;
    > > }
    > > }
    > >

    Oleg.

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-05-28 12:17    [W:0.045 / U:31.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site