Merged
Conversation
We have to call into both branches no matter what.
When a goal with an active child process is destroyed (e.g., during failure cascades without `--keep-going`), the child process gets killed but `childTerminated` was never called. This left stale entries in the worker's `children` list. Fix this by ensuring `childTerminated` is called from destructors: - `DerivationBuilderImpl::killChild` now calls `childTerminated` via the `miscMethods` callback. - `HookInstance` gains an `onKillChild` callback that is invoked from its destructor when killing the process. `buildWithHook` sets this callback to call `childTerminated`. To make these calls safe from destructors (where the goal object may be partially destroyed), add a new overload of `Worker::childTerminated` that takes an explicit `JobCategory` parameter instead of calling the virtual method `Goal::jobCategory`. The original overload still exists for convenience for normal (non-destructor) call sites.
xokdvium
approved these changes
Jan 11, 2026
Contributor
xokdvium
left a comment
There was a problem hiding this comment.
We should probably assert in some places that the goal pointer is not null.
JustAGuyTryingHisBest
pushed a commit
to JustAGuyTryingHisBest/nix
that referenced
this pull request
Jan 12, 2026
Misc builder fixes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Two fixes to the worker/goal machinery. See each commit for details.
Context
Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.