> right before we do something that might "take a long time".

Or "right before we do something that could change disk state".

On Mon, Jul 10, 2017 at 11:29 AM, Paul D. Smith <invalid.nore...@gnu.org>
wrote:

> Follow-up Comment #6, bug #51237 (project make):
>
> It's not the exact same problem but it's caused by the same flaw in the
> make
> code: doing lots of work in a signal handler.
>
> What I was hoping to do is change the signal handler to do nothing more
> than
> set a flag saying that the fatal signal was received, and move all the
> "stuff"
> into a separate function that is not a signal handler.
>
> There are lots of issues with having significant work done in a signal
> handler.  Another bug I just fixed this past weekend is to correct
> blocking/unblocking fatal signals, which we need to do only because the
> signal
> handler is mucking about with the child lists.
>
> Then it becomes the responsibility of the mainline code to check the fatal
> flag at various times and call the "do fatal stuff" function when it sees
> the
> flag is set.
>
> The question of course is, what are the correct "various times".  We can
> probably make some fairly good guesses: right before we do something that
> might "take a long time".
>
> I guess the real problem is the same one that led to lots of issues with
> the
> jobserver: even if we check immediately before we  start to wait for child
> to
> finish the signal could be received in the instant between when we check
> and
> we drop into the wait, and we would have to wait for the child to exit
> before
> we'd notice the fatal signal.  I'll have to think about that.
>
>     _______________________________________________________
>
> Reply to this item at:
>
>   <http://savannah.gnu.org/bugs/?51237>
>
> _______________________________________________
>   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
>
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to