Date: Tue, 14 Apr 1998 21:52:06 -0400 From: Adrian Colley <aecolley@world.std.com> To: Kyle McPeek <kyle@stdio.com> Cc: aecolley@alembic.isegoria.com, freebsd-hackers@FreeBSD.ORG Subject: Re: portmap problem... Message-ID: <E0yPHMy-0003zP-00.fnord@alembic.isegoria.com> In-Reply-To: Your message of "Mon, 13 Apr 1998 16:28:24 EDT."
next in thread | raw e-mail | index | archive | help
> Apr 2 20:51:48 harp portmap[110]: svc_run: - select failed: No child > processes > I have child_max set to 128 and the limits for daemon set to infinity. > Any thing else I should do? Any ideas? The rational explanation I offer is that SIGCHLD is being delivered to portmap at the same time as its return from select with a different error. The reap() function (portmap.c) runs wait3() in a while loop until eventually it returns -1 and sets errno to ECHILD. Back to the caller, and select, returning -1, has its errno overwritten (it was probably EINTR). Timer granularity means that this kind of race cannot really happen, so the interrupt must be delivered as select returns to user mode. In fact, it's almost certain that the delivery of SIGCHLD caused the select to wakeup. portmap probably should restore errno in reap(). It's odd that this doesn't happen more often, isn't it? Have I made a basic mistake in my analysis? --adrian. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E0yPHMy-0003zP-00.fnord>