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: Mon, 16 Jan 2006 01:20:57 -0500

> From: "Markus Mauhart" <address@hidden>
> Date: Sat, 14 Jan 2006 23:58:49 +0100
> 
> Unfortunately for the project I'm currently interested I get the same strange
> behaviour as recently when I for myself removed the if-w32-disable-j-code.
> It seems to be a combination of my "complicated" makefile stressing gmake
> generally, then stressed w32-code paths, stressed "-j"-codepaths, ...
> Without "-j [n] under w32", it workes flawless since 1 year, nevertheless
> it may be some bug in my makefile.

If the build works without -jN, the first thing to suspect is the
Makefile.  However, Make should not crash, even if your Makefile is
wrong; it is allowed to fail to produce the targets, but it is not
allowed to crash.

> 2) inside cmd.exe, using  my trivial or your current patch:
> "make -f Mymakefile -j 2or3orMore" ... executes like no "-j" had been used.

Is your Makefile recursive?  If so, see my questions to Paul: it
sounds like sub-Makes get -j1 switch for some reason, it's not yet
clear to me if that's by design or through some bug/mis-feature.

> "make -f Mymakefile -j"
> two kinds of nonsense happen:
> 
> Mymakefile running in mode 1, make creates 100-1000 bat files, executes
> 10-100 of them, then make.exe hanges, consuming its complete CPU, having no
> process childs..

At this point, when it hangs like that, how about if you attach a
debugger to it and see where it loops, and why?

> Mymakefile running in mode 2, make creates some 100 bat files, then ...

What are ``mode 1'' and ``mode 2'', and how are they related to the
issue of -jN?

> make.cvs.20060114.j_patch.mss.exe[1]: touch: open: 
> out/plugin/ndisasm/vc.Gui.Sh/disasm.obj: No such file or directory 
> make.cvs.20060114.j_patch.mss.exe: Interrupt/Exception caught (code = 
> 0xc0000005, addr = 0x398)
> make.cvs.20060114.j_patch.mss.exe: *** [all] Error 255

Your Make is built with a Microsoft compiler, right?  If so, can you
set up a JIT debugging environment, so that when it crashes like
above, a debugger is launched and attached to the crashing Make?  Then
please see where it crashes, look around a bit with a debugger to see
why, and come back here to tell what you saw.

(FWIW, I suspect that we launch too many sub-processes, since
getloadavg is a no-op for Windows; then some system resources are
depleted, some system call fails, but Make fails to notice that, and
blithely tries to continue.  But that's a guess, and it doesn't
explain why it works with Cygwin.)




reply via email to

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