Timothy Sample <samp...@ngyro.com> writes: > The problem goes away if I move “useSubstitutes” above “reservedSize”, > which has type “off_t”. I’m guessing this is because of something fishy > with “_FILE_OFFSET_BITS”, but I’m not sure what just yet.
Here’s my best guess as to what is going on. In “nix-daemon.cc” the order of includes causes “off_t” to be defined before “_FILE_OFFSET_BITS”, which results in it being something like a 32-bit signed integer. In “local-store.cc”, “_FILE_OFFSET_BITS” gets set first, yielding a 64-bit “off_t”. This causes all of the addresses in the “Settings” struct to be mismatched after “reservedSize”. I plugged in “sizeof(off_t)” into the “printMsg” calls from before, and (lo and behold) I saw 4 from “nix-daemon.cc” and 8 from “local-store.cc”. The following patch fixes the problem:
>From 3c3eafac82e0a6e8a37363d6eb46f128e585705a Mon Sep 17 00:00:00 2001 From: Timothy Sample <samp...@ngyro.com> Date: Thu, 12 Sep 2019 00:50:54 -0400 Subject: [PATCH] daemon: Include 'config.h' in 'nix-daemon.cc'. * nix/nix-daemon/nix-daemon.cc: Include 'config.h'. --- nix/nix-daemon/nix-daemon.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc index ffac6cde34..1163a249d1 100644 --- a/nix/nix-daemon/nix-daemon.cc +++ b/nix/nix-daemon/nix-daemon.cc @@ -1,3 +1,4 @@ +#include "config.h" #include "shared.hh" #include "local-store.hh" #include "util.hh" -- 2.23.0
Is this okay to push? It seems kind of conspicuous that it’s missing in the first place. Is it missing for a good reason? -- Tim