From owner-freebsd-current Wed Feb 26 3:25:46 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 15CF637B401; Wed, 26 Feb 2003 03:25:45 -0800 (PST) Received: from out001.verizon.net (out001pub.verizon.net [206.46.170.140]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0E26743FDD; Wed, 26 Feb 2003 03:25:44 -0800 (PST) (envelope-from mtm@identd.net) Received: from kokeb.ambesa.net ([138.88.144.132]) by out001.verizon.net (InterMail vM.5.01.05.27 201-253-122-126-127-20021220) with ESMTP id <20030226112543.ISTQ16831.out001.verizon.net@kokeb.ambesa.net>; Wed, 26 Feb 2003 05:25:43 -0600 Date: Wed, 26 Feb 2003 06:25:39 -0500 From: Mike Makonnen To: julian@freebsd.org Cc: freebsd-current@freebsd.org Subject: signals still broken ? X-Mailer: Sylpheed version 0.8.10 (GTK+ 1.2.10; i386-portbld-freebsd5.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Authentication-Info: Submitted using SMTP AUTH at out001.verizon.net from [138.88.144.132] at Wed, 26 Feb 2003 05:25:40 -0600 Message-Id: <20030226112543.ISTQ16831.out001.verizon.net@kokeb.ambesa.net> 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 # uname -a FreeBSD kokeb.ambesa.net 5.0-CURRENT FreeBSD 5.0-CURRENT #8: Tue Feb 25 16:45:54 EST 2003 mtm@kokeb.ambesa.net:/daemon/build/current/obj/daemon/build/current/src/sys/QUARK i386 The following program is stuck in pause(3) forever. I have reproduced the bug in 5.0-RELEASE, but 4.7-STABLE behaves as expected: the child resumes upon receiving SIGCONT. #include #include #include #include static void cont_handler() { ; } int main() { int child, status; if (signal(SIGCONT, cont_handler) == SIG_ERR) err(1, "signal()"); if ((child = fork()) == 0) { pause(); exit(0); } else if (child == -1) err(1, "fork()"); printf("sleeping 3s\n"); sleep(3); if (kill(child, SIGCONT) == -1) err(1, "kill()"); printf("waiting\n"); if ((child = wait(status)) == -1) err(1, "wait()"); printf("done\n"); return (0); } Cheers. -- Mike Makonnen | GPG-KEY: http://www.identd.net/~mtm/mtm.asc mtm@identd.net | Fingerprint: D228 1A6F C64E 120A A1C9 A3AA DAE1 E2AF DBCC 68B9 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message