NetBSD-Bugs archive

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

Re: kern/38060: blocking TSTP is broken



The following reply was made to PR kern/38060; it has been noted by GNATS.

From: yamt%mwd.biglobe.ne.jp@localhost (YAMAMOTO Takashi)
To: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, 
netbsd-bugs%netbsd.org@localhost,
        gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/38060: blocking TSTP is broken
Date: Mon,  3 Mar 2008 09:19:23 +0900 (JST)

 [ resending to gnats-bugs%NetBSD.org@localhost ]
 
 > > >Number:         38060
 > > >Category:       kern
 > > >Synopsis:       blocking TSTP is broken
 > 
 > how about this?
 > 
 > YAMAMOTO Takashi
 > 
 > 
 > Index: kern_sig.c
 > ===================================================================
 > RCS file: /cvsroot/src/sys/kern/kern_sig.c,v
 > retrieving revision 1.272
 > diff -u -p -r1.272 kern_sig.c
 > --- kern_sig.c       20 Feb 2008 11:48:46 -0000      1.272
 > +++ kern_sig.c       2 Mar 2008 12:21:27 -0000
 > @@ -1352,23 +1352,7 @@ kpsignal2(struct proc *p, ksiginfo_t *ks
 >              if ((prop & SA_CONT) != 0 && action == SIG_DFL)
 >                      goto out;
 >  
 > -            if ((prop & SA_STOP) != 0 && action == SIG_DFL) {
 > -                    /*
 > -                     * If a child holding parent blocked, stopping could
 > -                     * cause deadlock: discard the signal.
 > -                     */
 > -                    if ((p->p_sflag & PS_PPWAIT) == 0) {
 > -                            p->p_xstat = signo;
 > -                            proc_stop(p, 1, signo);
 > -                    }
 > -                    goto out;
 > -            } else {
 > -                    /*
 > -                     * Stop signals with the default action are handled
 > -                     * specially in issignal(), and so are not enqueued.
 > -                     */
 > -                    sigput(&p->p_sigpend, p, kp);
 > -            }
 > +            sigput(&p->p_sigpend, p, kp);
 >      } else {
 >              /*
 >               * Process is stopped or stopping.  If traced, then no
 


Home | Main Index | Thread Index | Old Index