On 4/18/23 09:25, Richard W.M. Jones wrote:
> Commit 6b03ec8ad6 ("common: Move exit-with-parent code from include/
> to utils/") was supposed to be a largely neutral refactoring of the
> --exit-with-parent flag.  However I made a mistake in one hunk of that
> patch:
> 
>     -#ifdef HAVE_EXIT_WITH_PARENT
>     -  if (exit_with_parent) {
>     -    if (set_exit_with_parent () == -1) {
>     -      perror ("nbdkit: --exit-with-parent");
>     -      exit (EXIT_FAILURE);
>     -    }
>     +  if (set_exit_with_parent () == -1) {
>     +    perror ("nbdkit: --exit-with-parent");
>     +    exit (EXIT_FAILURE);
>        }
>     -#endif
> 
> by removing the test for exit_with_parent.  The effect is similar to
> if we always specified --exit-with-parent when nbdkit is running in
> the foreground.
> 
> Somewhat surprisingly this didn't have any noticable effect.  That's
> for a few of reasons: (1) Mostly if you don't fork then you should be
> using --exit-with-parent (and the bulk of the tests do this).  (2) If
> we do fork into the background then the PR_SET_PDEATHSIG flag is
> cleared by Linux across the fork.  (3) It actually _did_ break Windows
> because there set_exit_with_parent calls abort, but for unrelated
> reasons our Windows CI was broken (and never tested running
> nbdkit.exe).
> 
> Fix this with the obvious adjustment.
> 
> This broke nbdkit 1.32 and 1.34.
> 
> Fixes: commit 6b03ec8ad672e5956b41cbacae9c307e5acd786b
> ---
>  server/main.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/server/main.c b/server/main.c
> index c3b9bf384..1df5d69ac 100644
> --- a/server/main.c
> +++ b/server/main.c
> @@ -574,9 +574,11 @@ main (int argc, char *argv[])
>    /* Implement --exit-with-parent early in case plugin initialization
>     * takes a long time and the parent exits during that time.
>     */
> -  if (set_exit_with_parent () == -1) {
> -    perror ("nbdkit: --exit-with-parent");
> -    exit (EXIT_FAILURE);
> +  if (exit_with_parent) {
> +    if (set_exit_with_parent () == -1) {
> +      perror ("nbdkit: --exit-with-parent");
> +      exit (EXIT_FAILURE);
> +    }
>    }
>  
>    /* If the user has mixed up -p/--run/-s/-U/--vsock options, then

Reviewed-by: Laszlo Ersek <ler...@redhat.com>

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to