From owner-freebsd-current Sun Dec 31 8:55:34 2000 From owner-freebsd-current@FreeBSD.ORG Sun Dec 31 08:55:32 2000 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mail.eqpankkiiriliike.fi (fw.eQpankkiiriliike.fi [212.226.216.93]) by hub.freebsd.org (Postfix) with ESMTP id 9C2D137B400 for ; Sun, 31 Dec 2000 08:55:31 -0800 (PST) Received: from eqonline.fi ([10.11.0.244]) by mail.eqpankkiiriliike.fi (Netscape Messaging Server 4.15) with ESMTP id G6FYZ200.612 for ; Sun, 31 Dec 2000 18:54:38 +0200 Sender: sja@FreeBSD.ORG Message-ID: <3A4F650D.3212A5C5@eqonline.fi> Date: Sun, 31 Dec 2000 18:55:41 +0200 From: User Sja Organization: eQ Online X-Mailer: Mozilla 4.75 [en] (X11; U; FreeBSD 5.0-CURRENT i386) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-current@freebsd.org Subject: PROCTREE_LOCK() vs. gdb hang Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I don't really know my way around the kernel so I'm just guessing here: Is there a proctree lock release operation missing in kern_sig.c, function issignal()? There seems to be one lock operation more than there are release operations. I tried putting one in and now gdb doesn't hang the whole machine (at least as easily as before.) #kern (sja@tilli) 112> cvs diff -u kern_sig.c Index: kern_sig.c =================================================================== RCS file: /usr/cvs/src/sys/kern/kern_sig.c,v retrieving revision 1.98 diff -u -r1.98 kern_sig.c --- kern_sig.c 2000/12/23 19:43:09 1.98 +++ kern_sig.c 2000/12/31 16:01:45 @@ -1311,6 +1311,7 @@ PROCTREE_LOCK(PT_SHARED); } while (!trace_req(p) && p->p_flag & P_TRACED); + PROCTREE_LOCK(PT_RELEASE); /* * If the traced bit got turned off, go back up ++sja To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message