Subject: Re: bug#9245: FreeBSD make in concurrent mode report spurious success in automake-generated tests harness

From: Stefano Lattarini <[email-masked]>
Date: Fri, 12 Aug 2011 20:49:06 +0200

[CC:ing bug-autoconf, about a FreeBSD make bug]

On Friday 12 August 2011, Stefano Lattarini wrote:
> OK, the attached hacky patch seems to fix the bug.  I have no idea why
> exactly it is so yet, so we might want to wait to apply the patch until
> we have fully understood the reasons of the original failure, and why
> the proposed patch seems to fix it.
> 
I have managed to reproduce the FreeBSD make bug with this one liner:

 $ echo 'all: ; @set +e; false' | make -j2 -f-

Notice that all of `-j', `@' and `set +e' are required to trigger the bug:

 $ echo 'all: ; set +e; false' | make -j2 -f-
 set +e; false
 *** Error code 1
 1 error

 $ echo 'all: ; @false' | make -j2 -f-
 *** Error code 1
 1 error

 $ echo 'all: ; @set +e; false' | make  -f-
 *** Error code 1
 Stop in /tmp.

A well-placed use of ps might give an hint about the problem:

 $ echo 'all: ; @set +e; ps -o args $$$$' | make -f- -j2
 COMMAND
 sh -ev

That `-v' flag seems truly fishy ...

System information:

 $ uname -rsm
 FreeBSD 8.2-RELEASE i386
 $ echo 'all: ; @echo $(MAKE_VERSION)' | make -f- 
 5200408120

This issue should IMHO be probably documented in the autoconf manual, and
reported to the FreeBSD developers.  I'll try to do that soonish (couple
of days) if nobody beats me.

Regards,
  Stefano