From owner-freebsd-threads@FreeBSD.ORG Thu Jan 31 19:25:13 2008 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2038C16A418 for ; Thu, 31 Jan 2008 19:25:13 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outI.internet-mail-service.net (outI.internet-mail-service.net [216.240.47.232]) by mx1.freebsd.org (Postfix) with ESMTP id 0971A13C4CC for ; Thu, 31 Jan 2008 19:25:12 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.40) with ESMTP; Thu, 31 Jan 2008 11:25:12 -0800 Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id E8DCC12708F; Thu, 31 Jan 2008 11:25:11 -0800 (PST) Message-ID: <47A22097.2040303@elischer.org> Date: Thu, 31 Jan 2008 11:25:11 -0800 From: Julian Elischer User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) MIME-Version: 1.0 To: Landon Fuller References: <200801240850.m0O8o2JQ023500@freefall.freebsd.org> <4798564B.7070500@elischer.org> <20080128185830.B56811@fledge.watson.org> <479E3079.3000803@elischer.org> <20080129222455.T53151@fledge.watson.org> <20080131093321.K35034@fledge.watson.org> <47A2170D.6020308@elischer.org> <42D09215-18FD-43A1-97E8-D4CC9E97AFDD@bikemonkey.org> In-Reply-To: <42D09215-18FD-43A1-97E8-D4CC9E97AFDD@bikemonkey.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Daniel Eischen , Gary Stanley , Robert Watson , freebsd-threads@freebsd.org Subject: Re: threads/119920: fork broken in libpthread X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jan 2008 19:25:13 -0000 Landon Fuller wrote: > > On Jan 31, 2008, at 10:44, Julian Elischer wrote: > >> the releng 6 and releng 7 versions of this patch are at: >> >> http://www.freebsd.org/~julian/kse-6.diff >> >> and >> >> http://www.freebsd.org/~julian/kse-7.diff >> >> >> but the one for 7 is just speculative. >> >> I don't have a 7.x system to test. >> >> >> Landon, what is your test case? >> > > Inlined below. On our 8-core 6.3 system without this patch, the fork() > threads wedge and spin in <2 minutes. With the patch, works as expected. when you say "wedge and spin" what do you see in top? which is it , wedge, or spin? > > #include > #include > #include > > void *forker (void *arg) { > while (1) { > pid_t pid = fork(); > if (pid == 0) { > exit(0); > } else if (pid > 0) { > int status; > waitpid(pid, &status, 0); > } else { > printf("Fork failed\n"); > abort(); > } > } > } > > int main(void) { > int i = 0; > for (i = 0; i < 4; i++) { > pthread_t thr; > pthread_create(&thr, NULL, forker, NULL); > pthread_detach(thr); > } > > while(1) > sleep(1000); > }