Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Mar 2003 22:51:49 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        current@FreeBSD.ORG
Subject:   Re: failed to set signal flags properly for ast()
Message-ID:  <20030308224649.X10373-100000@gamplex.bde.org>
In-Reply-To: <20030308053228.GA53542@rot13.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <kern.crit> 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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030308224649.X10373-100000>