Follow-up Comment #2, bug #40610 (project make):

It loops running the recipe for objdir/depend.mk. It does not rerun the mkdir.
Moving the mkdir into the recipe for depend.mk does not change the behavior;
however, removing objdir from the depends of depend.mk does.

If depend.mk exists and is newer than objdir, e.g. by creating both by hand
and then touching objdir/depend.mk, it doesn't attempt to rebuild depend.mk at
all and doesn't get into trouble.  However, it seems that once it runs the
depend.mk recipe it gets stuck.

It looks like the proximate cause is that after creating objdir/depend.mk,
objdir is newer than depend.mk, typically by about 1 ms. It looks like the
difference vs. 3.82 is that 3.82 doesn't notice this. (Possibly it just isn't
reading the fractional timestamps.)

What happens, based on the -d output and printing the full timestamps of
objdir and objdir/depend.mk at the end of the objdir/depend.mk recipe, is that
it creates depend.mk, which leaves depend.mk older than objdir, does

   Re-executing[1]: gmake -d

decides it needs to build depend.mk because it's older than objdir, and
thereby goes into an infinite loop.

This is looking like the underlying cause is a tmpfs bug, but it would still
probably be a good idea for make to not go into an infinite loop.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?40610>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to