[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#30948] [PATCH core-updates] guix: Reap finished child processes in
[bug#30948] [PATCH core-updates] guix: Reap finished child processes in build containers.
Fri, 30 Mar 2018 17:17:29 +0200
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)
Carlo Zancanaro <address@hidden> skribis:
> On Fri, Mar 30 2018, Ludovic Courtès wrote:
>>> From what I can understand it's one of pid 1's responsiblities to
>>> reap child processes, so I would expect this to be set up for every
>>> builder, before the builder is run.
>> True, but for derivations it’s also “optional” because eventually
>> guix-daemon terminates all its child processes.
> As long as the build process doesn't rely on behaviour that, strictly
> speaking, it should be allowed to rely on. It's not an issue of
> resource leaking, it's an issue of correctness.
>>> Given it's not specific to the gnu-build-system, I don't think it
>>> really fits there.
>> Yes, but note that it would be inherited by all the build systems.
> Except for trivial-build-system, which is probably fine. I still don't
> think it fits in a specific build system, given it's a behaviour that
> transcends the specific action happening within the container.
> Putting it in gnu-build-system will solve the problem in all realistic
> cases, so that's probably fine. It's still subtly incorrect, but will
> only be a problem if something using the trivial build system relies
> on pid 1 to reap a process, or if we make a new build system not
> deriving from gnu-build-system (which seems unlikely, but not
I agree, every Guile process running as PID 1 should reap processes.
My view is just that this mechanism belongs in “user code”, not in the
low-level mechanisms such as ‘build-expression->derivation’ and
‘gexp->derivation’. It’s a matter of separation of concerns.
Of course we don’t want to duplicate that code every time, but the way
we should factorize it, IMO, is by putting it in a “normal” module that
people will use.
Putting it in gnu-build-system is an admittedly hacky but easy way to
have it widely shared.