make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU make 3.81beta4 released


From: Eli Zaretskii
Subject: Re: GNU make 3.81beta4 released
Date: Wed, 18 Jan 2006 06:24:14 -0500

> Date: Wed, 18 Jan 2006 06:35:12 +0200
> From: Eli Zaretskii <address@hidden>
> 
> > 261 ? proc_index is allmost 33M ? !
> > 
> > -->
> > 
> > static sub_process *proc_array[256];
> > static int proc_index = 0;
> > 
> > proc_array[proc_index++] = (sub_process *) proc;
> > 
> > ... looks like we just left the bounds of our static array :-)
> 
> What happens if you use -j 200 instead of just -j?  Does it work
> successfully then?

Actually, in addition to the obvious bug in sub_proc.c whereby it
never checks that the number of processes exceeds the fixed 256-slot
array, there's one more problem that I see: the Win32 API function
WaitForMultipleObjects that sub_proc.c uses to wait for child
processes' demise is documented to be limited to a maximum of
MAXIMUM_WAIT_OBJECTS objects.  MAXIMUM_WAIT_OBJECTS's value is 64, way
less than 256.  So please try to run your build with -j 64 in the
sub-Make's command line, and see if that works without hanging and
without crashing.

I will later craft a patch to handle these two problems.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]