guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] scripts: environment: Properly handle SIGINT.


From: Ludovic Courtès
Subject: Re: [PATCH] scripts: environment: Properly handle SIGINT.
Date: Sat, 26 Mar 2016 19:23:17 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

David Thompson <address@hidden> skribis:

> Has anyone ever been really annoyed that C-c doesn't work in a bash
> shell spawned by 'guix environment'?  Me too!  And I finally got around
> to fixing it.  I would like to get this in before 0.10.0 is released.

Indeed, that’s annoyed me a few times.  :-)  (C-z does work though.)

> From ec7994eec73d322386abbcd901da1b1d2f6f7733 Mon Sep 17 00:00:00 2001
> From: David Thompson <address@hidden>
> Date: Sat, 26 Mar 2016 08:45:08 -0400
> Subject: [PATCH] scripts: environment: Properly handle SIGINT.
>
> Switching to execlp means that the process spawned in a container is PID
> 1, which obsoleted one of the 'guix environment --container' tests
> because the init process can't be killed in the usual manner.
>
> * guix/scripts/environment.scm (launch-environment/fork): New procedure.
> (launch-environment): Switch from system* to execlp.  Add handler for
> SIGINT.
> (guix-environment): Use launch-environment/fork.

Isn’t it enough to add the ‘sigaction’ call to fix the C-c issue?

Now, it’s nice to be PID 1 instead of PID 2, but that seems to be a
separate issue, no?

> * tests/guix-environment-container.sh: Remove obsolete test.

[...]

> -if guix environment --bootstrap --container \
> -     --ad-hoc bootstrap-binaries -- kill -SEGV 2
> -then false;
> -else
> -    test $? -gt 127
> -fi

This test was added in light of <http://bugs.gnu.org/21958>.  We want to
make sure we don’t lose that property.

What happens exactly when a signal is sent to PID 1?  I would expect
that its parent process, which is outside the container in a waitpid
call, would simply get its exit value in the normal way, and thus,
changing “2” to “1” in this test should do the trick.  Am I naïve?  :-)

Thanks for looking into it!

Ludo’.



reply via email to

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