From owner-p4-projects Thu Jun 13 15:52: 7 2002 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B832037B404; Thu, 13 Jun 2002 15:52:00 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from green.bikeshed.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 88DF637B410; Thu, 13 Jun 2002 15:51:59 -0700 (PDT) Received: from localhost (green@localhost) by green.bikeshed.org (8.11.6/8.11.6) with ESMTP id g5DMpxX56277; Thu, 13 Jun 2002 18:51:59 -0400 (EDT) (envelope-from green@green.bikeshed.org) Message-Id: <200206132251.g5DMpxX56277@green.bikeshed.org> X-Mailer: exmh version 2.5 07/13/2001 with nmh-1.0.4 To: Brian Feldman Cc: Perforce Change Reviews Subject: Re: PERFORCE change 12837 for review In-Reply-To: Your message of "Thu, 13 Jun 2002 11:00:55 PDT." <200206131800.g5DI0tp46864@freefall.freebsd.org> From: "Brian F. Feldman" Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Thu, 13 Jun 2002 18:51:59 -0400 Sender: owner-p4-projects@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Brian Feldman wrote: > http://people.freebsd.org/~peter/p4db/chv.cgi?CH=12837 > > Change 12837 by green@green_laptop_1 on 2002/06/13 11:00:16 > > Make zombie_thread_lock back into a spin lock and remove the > condition where it could sleep; then, make the kernel actually > able to boot by adding it to witness's lock order list!!! I'm still having some problems, though. Try this test case: #include #include #include #include #include #include #include int main() { pid_t forkedpid, wpid; int status; forkedpid = fork(); if (forkedpid == 0) { printf("child %d pausing\n", (int)getpid()); sleep(1); printf("child %d raising TSTP\n", (int)getpid()); raise(SIGTSTP); printf("child %d raising STOP\n", (int)getpid()); raise(SIGSTOP); printf("child %d exiting\n", (int)getpid()); exit(0); } printf("parent %d waiting for child %d\n", (int)getpid(), (int)forkedpid); wpid = waitpid(forkedpid, &status, 0); if (wpid == -1) err(1, "waitpid"); printf("child wait code: %#x\n", status); kill(forkedpid, SIGKILL); exit(0); } -- Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\ <> green@FreeBSD.org <> bfeldman@tislabs.com \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message