[bitbake-devel] [PATCH] server/process: Handle SIGTERM more gracefully
clarson at kergoth.com
Mon Sep 7 20:17:25 UTC 2015
On Mon, Sep 7, 2015 at 8:55 AM, Richard Purdie <
richard.purdie at linuxfoundation.org> wrote:
> Currently if you send a SIGTERM to the bitbake UI process, the system
> hangs if tasks are executing. This is because the server process doesn't
> actually try any kind of shutdown before exiting.
> This patch trys executing a stateForceShutdown command first, which is
> enough to stop any active tasks before the system exits.
> I also noticed that terminate can execute multiple times, once at SIGTERM
> from the handler and once from the real exit. Double execution leads to
> stack traces and potential hangs (writes to dead pipes), so ensure
> the code only can run once.
> With these fixes, bitbake much more correctly deals with SIGTERM to the
> UI process.
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
Just as an FYI for consideration in the longer term, you can raise an
exception from a signal handler, to handle sigterm the same way as sigint
for consistency. Ex.:
Which reminds me, we don't exit with the correct exit code for
sigint/sigterm, so the calling shell doesn't know the cause of the exit.
See also http://www.cons.org/cracauer/sigint.html -- fantastic article
there, highly recommended.
https://docs.python.org/3/library/signal.html#example has an example of
raising an exception from another signal handler, so it seems to be kosher.
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the bitbake-devel