From owner-freebsd-current Sat Mar 8 4: 0: 8 2003 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3D99D37B401 for ; Sat, 8 Mar 2003 04:00:06 -0800 (PST) Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1833B43F3F for ; Sat, 8 Mar 2003 04:00:05 -0800 (PST) (envelope-from bde@zeta.org.au) Received: from katana.zip.com.au (katana.zip.com.au [61.8.7.246]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id WAA24638; Sat, 8 Mar 2003 22:51:49 +1100 Date: Sat, 8 Mar 2003 22:51:49 +1100 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: Kris Kennaway Cc: current@FreeBSD.ORG Subject: Re: failed to set signal flags properly for ast() In-Reply-To: <20030308053228.GA53542@rot13.obsecurity.org> Message-ID: <20030308224649.X10373-100000@gamplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, 7 Mar 2003, Kris Kennaway wrote: > I've been getting a few of these on 5.0 lately: > > Mar 7 21:31:07 bento kernel: failed to set signal flags properly for ast() > > Is there any additional debugging information I can provide to help > track this down? It wouldn't hurt to know the signal masks. This patch has rotted a bit: %%% Index: subr_trap.c =================================================================== RCS file: /home/ncvs/src/sys/kern/subr_trap.c,v retrieving revision 1.239 diff -u -2 -r1.239 subr_trap.c --- subr_trap.c 28 Dec 2002 01:23:07 -0000 1.239 +++ subr_trap.c 28 Dec 2002 05:32:51 -0000 @@ -73,7 +79,7 @@ u_int oticks; { - struct proc *p = td->td_proc; - struct kse *ke = td->td_kse; + struct proc *p; + p = td->td_proc; CTR3(KTR_SYSC, "userret: thread %p (pid %d, %s)", td, p->p_pid, p->p_comm); @@ -84,6 +90,16 @@ mtx_lock_spin(&sched_lock); if (SIGPENDING(p) && ((p->p_sflag & PS_NEEDSIGCHK) == 0 || - (td->td_kse->ke_flags & KEF_ASTPENDING) == 0)) + (td->td_kse->ke_flags & KEF_ASTPENDING) == 0)) { printf("failed to set signal flags properly for ast()\n"); + printf( +"proc %s sig %#x %#x %#x %#x, mask %#x %#x %#x %#x, sigflag %d, astflag %d\n", + p->p_comm, + ((u_int *)&p->p_siglist)[0], ((u_int *)&p->p_siglist)[1], + ((u_int *)&p->p_siglist)[2], ((u_int *)&p->p_siglist)[3], + ((u_int *)&p->p_sigmask)[0], ((u_int *)&p->p_sigmask)[1], + ((u_int *)&p->p_sigmask)[2], ((u_int *)&p->p_sigmask)[3], + (p->p_sflag & PS_NEEDSIGCHK) != 0, + (td->td_kse->ke_flags & KEF_ASTPENDING) != 0); + } mtx_unlock_spin(&sched_lock); PROC_UNLOCK(p); %%% We really need to determine what didn't set the signal masks, but that is difficult to determine from here. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message