fix: Ignore Interrupted in recursive-nix daemon worker

Otherwise, if checkInterrupt() in any of the supported store operations
would catch onto a user interrupt, the exception would bubble to the thread
start and be handled by std::terminate(): a crash.
This commit is contained in:
Robert Hensing 2024-10-10 12:31:34 +02:00
parent de0a34a362
commit 0e5a5303ad

View file

@ -65,6 +65,7 @@
#include <iostream> #include <iostream>
#include "strings.hh" #include "strings.hh"
#include "signals.hh"
namespace nix { namespace nix {
@ -1579,6 +1580,8 @@ void LocalDerivationGoal::startDaemon()
FdSink(remote.get()), FdSink(remote.get()),
NotTrusted, daemon::Recursive); NotTrusted, daemon::Recursive);
debug("terminated daemon connection"); debug("terminated daemon connection");
} catch (const Interrupted &) {
debug("interrupted daemon connection");
} catch (SystemError &) { } catch (SystemError &) {
ignoreExceptionExceptInterrupt(); ignoreExceptionExceptInterrupt();
} }