[launchd-changes] [23447] trunk/launchd/testing/our_kill_is_busted.c

source_changes at macosforge.org source_changes at macosforge.org
Tue Oct 30 14:41:05 PDT 2007


Revision: 23447
          http://trac.macosforge.org/projects/launchd/changeset/23447
Author:   zarzycki at apple.com
Date:     2007-10-30 14:41:05 -0700 (Tue, 30 Oct 2007)

Log Message:
-----------
5487498

Added Paths:
-----------
    trunk/launchd/testing/our_kill_is_busted.c

Added: trunk/launchd/testing/our_kill_is_busted.c
===================================================================
--- trunk/launchd/testing/our_kill_is_busted.c	                        (rev 0)
+++ trunk/launchd/testing/our_kill_is_busted.c	2007-10-30 21:41:05 UTC (rev 23447)
@@ -0,0 +1,56 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+
+int
+main(void)
+{
+	int wstatus;
+	pid_t p, wr;
+	int kill_r, killpg_r, r;
+	int kill_e, killpg_e;
+
+	p = fork();
+	assert(p != -1);
+
+	if (p == 0) {
+		r = setsid();
+		assert(r != -1);
+		_exit(EXIT_SUCCESS);
+	}
+
+	sleep(1);
+
+	errno = 0;
+	kill_r = kill(p, SIGTERM);
+	kill_e = errno;
+
+	errno = 0;
+	killpg_r = kill(-(p), SIGTERM);
+	killpg_e = errno;
+
+	if (kill_r != killpg_r) {
+		fprintf(stderr, "Bug. kill() is inconsistent.\n");
+		fprintf(stderr, "kill(   p, SIGTERM) returned %d and errno == %d\n", kill_r, kill_e);
+		fprintf(stderr, "kill(-(p), SIGTERM) returned %d and errno == %d\n", killpg_r, killpg_e);
+		if (kill_e == EPERM || killpg_e == EPERM) {
+			fprintf(stderr, "The kernel lied. We should have the right to kill 'p' and it returned EPERM.\n");
+		}
+		if (kill_e == ESRCH || killpg_e == ESRCH) {
+			fprintf(stderr, "The kernel is confused. PID 'p' exists, but the kernel couldn't find it.\n");
+		}
+
+		exit(EXIT_FAILURE);
+	}
+
+	wr = waitpid(p, &wstatus, 0);
+	assert(wr == p);
+
+	exit(EXIT_SUCCESS);
+}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20071030/43ea45ba/attachment.html


More information about the launchd-changes mailing list