Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Reply-To: From: "Espen Harlinn" To: Subject: RE: A process can't have more than 63 child processes. Date: Fri, 9 Feb 2001 02:57:37 +0100 Message-ID: <000401c0923b$add86660$1a01a8c0@ajasoft02> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2911.0) In-Reply-To: <20010208090337.A29571@redhat.com> Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 Another possible solution would be to create additional threads, and delegate the WaitForMultipleObjects, using 3 threads, one to manage the other two, would allow 124 children to be executed. Espen > -----Original Message----- > From: cygwin-developers-owner AT sources DOT redhat DOT com > [mailto:cygwin-developers-owner AT sources DOT redhat DOT com]On Behalf Of > Christopher Faylor > Sent: Thursday, February 08, 2001 3:04 PM > To: cygwin-developers AT cygwin DOT com > Subject: Re: A process can't have more than 63 child processes. > > > 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. > >