On Sun, Jun 18, 2017 at 5:31 AM, Eli Zaretskii <[email protected]> wrote: > > From: Orgad Shaneh <[email protected]> > > Date: Sat, 17 Jun 2017 23:04:11 +0300 > > Cc: [email protected], Alexey Pavlov <[email protected]> > > > > +#ifdef WINDOWS32 > > + for (e = 0; e < 10; ++e) > > + { > > +#endif > > + status = unlink (file->name); > > +#ifdef WINDOWS32 > > + if (status == 0 || errno == ENOENT) > > + break; > > + Sleep(50); > > + } > > +#endif > > Please try the same, but with Sleep calls using 10 or even 5 msec (and > enlarging the loop count if necessary). I'd be interested to see the > statistics of the count after which the unlink call succeeds in your > cases. > > Thanks. >
On my machine it also doesn't reproduce every time, but I can reproduce it. I used Sleep(5), and had count of 2 (I had the same with Sleep(50)). I think the problem is that reap_children() is called *after* delete_child_targets, so the child jobs can still run while make is trying to delete. Maybe delete_targets should become part of reap_children (it cannot be called after reap, because at this point you don't have the target info anymore). What do you say? - Orgad
_______________________________________________ Bug-make mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-make
