[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions about signal handling in GNU Make

From: Masahiro Yamada
Subject: Re: Questions about signal handling in GNU Make
Date: Sun, 25 Jul 2021 00:38:23 +0900

On Sat, Jul 24, 2021 at 11:57 PM Kaz Kylheku (gmake)
<> wrote:
> On 2021-07-24 06:21, Masahiro Yamada wrote:
> > To avoid the race on the tool side, as you mentioned,
> > we can write to a tmpfile, and rename it as a last step.
> But, no we can't!
> This situation is not a problem only in the case when
> the recipe has one step to perform.
> What if it is like this?
>     out: in
>         step1 in out
>         step2 out
> step1 performs the temporary rename dance to atomically
> create "out", while make is handling the interrupt again.
> make doesn't see "out" so doesn't remove anything, but
> then moments later, step1 executes a rename of a temporary
> file to "out" before terminating.
> Now there is a half-baked but up-to-date out, because
> step2 wasn't executed.

I said that renaming "as a last step".

So, the recipe that invokes multiple commands
should look like follows:

out: in
        step1 in out.tmp
        step2 out.tmp
        mv out.tmp out

Best Regards
Masahiro Yamada

reply via email to

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