[bitbake-devel] [1.32][PATCH] bitbake-worker child process create group before registering SIGTERM handler
Ivan Efimov
i.efimov at inango-systems.com
Thu Nov 7 06:35:12 UTC 2019
Hi Armin,
I've rechecked that this issue is relevant to next branches besides 1.32 and master:
1.26
1.28
1.30
1.34
1.36
1.38
1.40
1.42
1.44
Could you please tell me what of them are still supported by BitBake community?
Best regards,
Ivan
[ https://inango.com/ | ]
Ivan Efimov
Software Architect, Arch Group
i.efimov at inango-systems.com
T +7 343 298 0147 C +7 904 9 888 350
[ https://inango.com/ | inango.com ] [ https://www.linkedin.com/company/inango ]
----- Original Message -----
From: "akuster" <akuster at mvista.com>
To: "Ivan Efimov" <i.efimov at inango-systems.com>, bitbake-devel at lists.openembedded.org
Sent: Thursday, November 7, 2019 3:00:46 AM
Subject: Re: [bitbake-devel] [1.32][PATCH] bitbake-worker child process create group before registering SIGTERM handler
On 11/5/19 6:07 AM, Ivan Efimov via bitbake-devel wrote:
> The bitbake-worker child on the SIGTERM signal handling send the SIGTERM to all
> processes in it's process group. In cases when the bitbake-worker child got
> SIGTERM after registering own SIGTERM handler and before the os.setsid() call
> it can send SIGTERM to unwanted processes.
>
> In the worst case during SIGTERM processing the bitbake-worker child can be in
> the group of the process that started BitBake itself. As a result it can kill
> processes that not related to BitBake at all.
>
> Signed-off-by: Ivan Efimov <i.efimov at inango-systems.com>
I see master and 1.32 have patches. To confirm, 1.44, 140.1.38, 1.36,...
need this too?
- Armin
> ---
> bin/bitbake-worker | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/bin/bitbake-worker b/bin/bitbake-worker
> index db3c4b18..6a12a31c 100755
> --- a/bin/bitbake-worker
> +++ b/bin/bitbake-worker
> @@ -189,9 +189,6 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, append
> global worker_pipe_lock
> pipein.close()
>
> - signal.signal(signal.SIGTERM, sigterm_handler)
> - # Let SIGHUP exit as SIGTERM
> - signal.signal(signal.SIGHUP, sigterm_handler)
> bb.utils.signal_on_parent_exit("SIGTERM")
>
> # Save out the PID so that the event can include it the
> @@ -206,6 +203,11 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, append
> # This ensures signals sent to the controlling terminal like Ctrl+C
> # don't stop the child processes.
> os.setsid()
> +
> + signal.signal(signal.SIGTERM, sigterm_handler)
> + # Let SIGHUP exit as SIGTERM
> + signal.signal(signal.SIGHUP, sigterm_handler)
> +
> # No stdin
> newsi = os.open(os.devnull, os.O_RDWR)
> os.dup2(newsi, sys.stdin.fileno())
More information about the bitbake-devel
mailing list