Issig console messages

utzoo!utcsrgv!thomson utzoo!utcsrgv!thomson
Fri Mar 19 15:47:51 AEST 1982


We have found two ways in 4.1BSD that an "issig" console message can be
produced.  The first occurs when a stopped process is restarted untraced,
and is corrected by adding to routine issig() in file sig.c the
lines marked by a '$' below:

			} while (!procxmt() && p->p_flag&STRC);

		$	/*
		$	 * If the traced bit got turned off,
		$	 * then put the signal taken above back into p_sig
		$	 * and go back up to the top to rescan signals.
		$	 * This ensures that siga0 and u_signal are consistent.
		$	 */
		$	if ((p->p_flag&STRC) == 0) {
		$		p->p_sig |= sigmask;
		$		continue;	/* go back and retry */
		$	}

			/*
			 * If parent wants us to take the signal,
			 * then it will leave it in p->p_cursig;
			 * otherwise we just look for signals again.
			 */
The second is due to an incorrect correspondence between signal number
and sigmask when resetting caught signals during an exec(), and is
corrected by changing one line in routine setregs() of file sys1.c from
	for(rp = &u.u_signal[0], sigmask = 1L; rp < &u.u_signal[NSIG];
to
	for(rp = &u.u_signal[1], sigmask = 1L; rp < &u.u_signal[NSIG];

					Brian Thomson
					Computer Systems Research Group
					University of Toronto
					(decvax!utzoo!utcsrgv!thomson)



More information about the Comp.bugs.4bsd.ucb-fixes mailing list