This is the mail archive of the
cygwin-developers@sources.redhat.com
mailing list for the Cygwin project.
Re: A process can't have more than 63 child processes.
- To: cygwin-developers at cygwin dot com
- Subject: Re: A process can't have more than 63 child processes.
- From: Christopher Faylor <cgf at redhat dot com>
- Date: Thu, 8 Feb 2001 09:03:37 -0500
- References: <s1sofwd7dq0.fsf@jaist.ac.jp>
- Reply-To: cygwin-developers at cygwin dot com
Yep. This has been noted before. The WaitForMultipleObjects
restriction makes it impractical to have more than 63 children.
I guess we should set PSIZE to 64.
cgf
On Thu, Feb 08, 2001 at 05:58:47PM +0900, Kazuhiro Fujieda wrote:
>I'm afraid the following includes only problem reports.
>
>A process in Cygwin seems able to have up to 1023 children
>because of the following code of `subproc.cc' and `pinfo.h'.
>
>subproc.cc (proc_subproc)
>247: case PROC_ADDCHILD:
>248: if (nchildren >= PSIZE - 1)
>249: system_printf ("nchildren too large %d", nchildren);
>250: pchildren[nchildren] = vchild;
>pinfo.h
>21: #define PSIZE 1024
>
>But a process can't have more than 63 child process in practice,
>because WaitForMultipleObjects can't wait over 64 objects
>according to MSDN.
>
>subproc.cc (wait_subproc)
>1234: DWORD rc = WaitForMultipleObjects (nchildren + 1, events, FALSE,
>1235: proc_loop_wait);
>
>In addition, fork doesn't return any error when a process create
>too many children, because proc_subproc properly handle this
>error as quoted above. I expect fork returns -1 and set errno to
>EAGAIN.