[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’.