delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/07/20/15:31:46

X-Spam-Check-By: sourceware.org
Date: Thu, 20 Jul 2006 15:31:34 -0400
From: Christopher Faylor <cgf-no-personal-reply-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Perl failure
Message-ID: <20060720193134.GB14980@trixie.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <20060713180601 DOT GA3872 AT efn DOT org> <B7392353E4C4DE4ABC4EC255DB4CA040034716A2 AT EXCHVS1 DOT spimageworks DOT com> <20060719100824 DOT GD18664 AT calimero DOT vinschen DOT de>
Mime-Version: 1.0
In-Reply-To: <20060719100824.GD18664@calimero.vinschen.de>
User-Agent: Mutt/1.5.11
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Wed, Jul 19, 2006 at 12:08:24PM +0200, Corinna Vinschen wrote:
>On Jul 18 17:45, Bruce Dobrin wrote:
>> Hi,  
>> I stripped down the code to a small testable bit.  The problem seems to
>> occur when I reach 256 forks on a cygwin1.5.18 or 19 but not on my
>> cygwin1.5.5. win2k system.  The original code give the forked process
>> time to finish,  but it still looks like it eats it after about 256
>> iterations  ( it actually failed between 259 and 252 iterations,  but
>> it's pretty complicated so I'm not sure what else was happening).
>> 
>> Here is my test code:
>> dobrin AT tiburon:/tmp> cat test8.pl 
>> ################
>> #!/usr/bin/perl -w
>> 
>> use strict;
>> my $pid;
>> 
>> foreach my $incr (`seq 1 1 800`) {
>>          
>>                     unless (defined ($pid = fork)) {
>>                          die " cannot fork $!";
>>                      }
>>                     unless ($pid) {
>>                       print " the sequence is $incr \n";
>>                       exit;
>>                     }
>>              print "pid is $pid\n";
>>            }
>> 
>> ###############
>> 
>> The error here is :
>> cannot fork Resource temporarily unavailable at ./test8.pl line 11.
>> panic: MUTEX_LOCK (45) [op.c:354].
>> 
>> On cygwin1.5.5 it finishes successfully.  I'm not sure if there is
>> anything else I can try,  I'm looking around for some other machines
>> with older cygwins on them to establish what version it stopped working
>> in.
>
>Lots and lots of changes has been made between 1.5.5 and 1.5.20.  I don't
>recall what was different in relation to process handling, especially
>because that's cgf's domain, not mine.
>
>But I can tell you that the above perl script is missing a crucial
>point.  The parent doesn't reap its children using wait.  As a result,
>the parent has references to its children which just add up, since it
>gets no chance to drop the references.
>
>For quite some time each Cygwin process has a maximum number of 256
>active children.

Actually, for 1.5.5, the limit was probably 62 or 63.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019