GNU bug report logs - #27704
[PATCH] daemon: Show actual rather than collateral error when export fails.

Previous Next

Package: guix-patches;

Reported by: Jan Nieuwenhuizen <janneke <at> gnu.org>

Date: Sat, 15 Jul 2017 11:00:02 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


Message #8 received at 27704 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: 27704 <at> debbugs.gnu.org
Subject: Re: [bug#27704] [PATCH] daemon: Show actual rather than collateral
 error when export fails.
Date: Mon, 17 Jul 2017 11:47:04 +0200
Hello,

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

> Having the wrong permissions on /etc/guix/signing-key.sec gives
>
>     guix-daemon: nix/libutil/serialise.cc:15: virtual nix::BufferedSink::~BufferedSink(): Assertion `!bufPos' failed.
>
> this patch changes that to
>
>     guix-daemon: error: file `/etc/guix/signing-key.sec' should be secret (inaccessible to everybody else)!
>
> * nix/nix-daemon/nix-daemon.cc (performOp): Catch any exportPath exception,
> report and exit on that.  Fixes failing later with uninformative collateral error.

Good catch!

> --- a/nix/nix-daemon/nix-daemon.cc
> +++ b/nix/nix-daemon/nix-daemon.cc
> @@ -436,7 +436,13 @@ static void performOp(bool trusted, unsigned int clientVersion,
>          bool sign = readInt(from) == 1;
>          startWork();
>          TunnelSink sink(to);
> -        store->exportPath(path, sign, sink);
> +        try {
> +            store->exportPath(path, sign, sink);
> +        }
> +        catch (std::exception &e) {
> +            fprintf (stderr, "guix-daemon: error: %s\n", e.what ());
> +            exit (EXIT_FAILURE);

I think we should simply do:

  sink.flush();
  throw e;

in the ‘catch’ handler.

That way, we won’t have the assertion failure, and yet the error will
correctly propagate to the client without forcing a disconnect.

Could you check if that works as expected?

Thank you!

Ludo’.




This bug report was last modified 8 years and 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.