> Date: Wed, 18 Jan 2006 06:35:12 +0200
> From: Eli Zaretskii <[EMAIL PROTECTED]>
> 
> > 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.


_______________________________________________
Make-w32 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to