Date: Tue, 11 Mar 2003 17:04:55 +0800 From: "David Xu" <davidxu@freebsd.org> To: "Bruce Evans" <bde@zeta.org.au> Cc: <src-committers@FreeBSD.org>, <cvs-src@FreeBSD.org>, <cvs-all@FreeBSD.org> Subject: Re: cvs commit: src/usr.bin/su su.c Message-ID: <000501c2e7ad$48ab2790$f001a8c0@davidw2k> References: <200303110010.h2B0ANe3061768@repoman.freebsd.org> <20030311180357.E23929@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message -----=20 From: "Bruce Evans" <bde@zeta.org.au> To: "David Xu" <davidxu@FreeBSD.org> Cc: <src-committers@FreeBSD.org>; <cvs-src@FreeBSD.org>; = <cvs-all@FreeBSD.org> Sent: Tuesday, March 11, 2003 3:59 PM Subject: Re: cvs commit: src/usr.bin/su su.c > On Mon, 10 Mar 2003, David Xu wrote: >=20 > > davidxu 2003/03/10 16:10:23 PST > > > > FreeBSD src repository > > > > Modified files: > > usr.bin/su su.c > > Log: > > Fix long standing job control bug. SIGTSTP shouldn't be ignored. > > Special instructions tested: > > suspend > > stop $$ >=20 > Er, this can't be right, since it removes the initialization of = sa_tstp > as a side effect, so sa_tstp is stack garbage when it is used set > SIGTSTP for the child. I think it may work because errors for the > second setting of SIGTSTP are ignored (all errors from sigaction are > ignored, of course :-(), and SIGTSTP is soon handled correctly by the > shell, but ignoring SIGTSTP was wrong for the inital su process. >=20 Unfortunately I had ignored code for child process :( BTW, The SIGTSTP handler will be reset by execsigs() in kernel, The garbage sa_tstp is only effective in very short time. > The bug is actually a shortstanding job control bug. SIGTSTP started = being > ignored in rev.1.53, in at attempt to work around the = not-so-shortstanding > PAM bug of gumming up job control by spawning shells instead of = exec'ing > them. su hasn't been PAMmed in RELENG_4, so the bug isn't in any = usable > release. >=20 > > Revision Changes Path > > 1.64 +0 -1 src/usr.bin/su/su.c >=20 > Rev.1.53 makes changes of +3 -1 for SIGTSTP. Backing out all these > changes would remove the use of stack garbage. But perhaps SIGTSTP > should have been set to SIG_DFL instead of SIG_IGN for the initial > su process, so su doesn't depend on its initial state. Then restoring > its initial state for child would be almost as dubious as "restoring" > stack garbage, so the sa_tstp variable is not needed eithe way. >=20 > Untested patches relative to relative to an old version: >=20 <snip> > ... > The patches also reduce nearby style bugs and add old code for = debugging > this problem. >=20 Thanks, I will test it, maybe commit if it is OK. > Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000501c2e7ad$48ab2790$f001a8c0>