| 10 Aug 2023 |
p14 | When I do set -x like that, the problem goes away | 14:03:11 |
p14 | But with the given strace, the problem is present (assuming --rebuild doesn't do something funny whereby the build functions correctly but I'd get a bad file under result/nix-support/setup-hook) | 14:03:57 |
p14 | In the trace, /nix/store/9kaazhysw3pmzlrslpb1nsgy97hq8hlm-x86_64-unknown-linux-gnu-llvm-binutils-wrapper-15.0.7/nix-support/setup-hook in file descriptor 3 is the empty file, and the writes to file descriptor 1 are what it should contain (but it is empty). | 14:04:35 |
trofi | you can also add -y to strace to get something more readable. | 14:04:38 |
p14 | Oh my goodness, TIL. | 14:04:54 |
p14 | Uhm, is a path of this form expected...
| 14:07:07 |
p14 | newfstatat(AT_FDCWD</>, "/nix/store/cks0priigwh4vpbfd1p7gzy1h0jcpw0q-x86_64-unknown-linux-gnu-llvm-binutils-wrapper-15.0.7.drv.chroot/nix/store/9kaazhysw3pmzlrslpb1nsgy97hq8hlm-x86_64-unknown-linux-gnu-llvm-binutils-wrapper-15.0.7/nix-support/setup-hook", {st_mode=S_IFREG|0644, st_size=4781, ...}, AT_SYMLINK_NOFOLLOW) = 0
| 14:07:10 |
trofi | ANything fancy in your extra-sandbox-paths = in /etc/nixo/nix.conf by chance? | 14:07:13 |
trofi | Yeah, You see how nix actually builds a chroot environment :) | 14:07:46 |
trofi | * Anything fancy in your extra-sandbox-paths = in /etc/nixo/nix.conf by chance? | 14:07:59 |
p14 | In reply to @trofi:matrix.org Anything fancy in your extra-sandbox-paths = in /etc/nixo/nix.conf by chance? Blank. sandbox = true. sandbox-fallback = false. | 14:08:52 |
p14 | I have ca-derivations turned on. | 14:09:04 |
trofi | Looks safe. | 14:09:16 |
trofi | Should be fine (I do as well). | 14:09:37 |
trofi | try to compare strace on "good" and "bad" machines. the derivations looks small enough to have a chance to be diffable. | 14:10:42 |
trofi | strace also has -s 999999 flag to increase size of visible strings flying around. | 14:11:28 |
p14 | Phew, I think I'm going to have to take a break from this. I've not learned anything more with -y. I see the file get opened, it gets dup'd to FD 1, closed, writes go to fd1, then fd1 has something else dup'd over it. And at the end of the day I'm left with an empty file | 14:13:13 |
p14 | The file does appear to be written to twice with identical contents, oddly. | 14:13:39 |
p14 | But not in parallel as best as I can see. | 14:13:51 |
p14 | I'm not seeing a truncate or another open which would truncate the file | 14:14:08 |
trofi | Yeah, odd stuff might happen on nix-daemon side later. | 14:15:05 |
p14 | Furthermore, I actually see another process read 4781 bytes from /nix/store/cks0priigwh4vpbfd1p7gzy1h0jcpw0q-x86_64-unknown-linux-gnu-llvm-binutils-wrapper-15.0.7.drv.chroot/nix/store/9kaazhysw3pmzlrslpb1nsgy97hq8hlm-x86_64-unknown-linux-gnu-llvm-binutils-wrapper-15.0.7/nix-support/setup-hook. | 14:15:27 |
p14 | So I'm left thinking that something corrupted the file as it was being put into the store | 14:15:42 |
p14 | And --rebuild isn't doing what I would expect to detect/fix the corruption | 14:16:02 |
trofi | I think --rebuild never replaces files already present in store. | 14:16:33 |
p14 | But should it not compare them at least?# | 14:16:49 |
p14 | If it's comparing them and saying everything is OK, that suggests the corruption may be happening before the compare and is reproducible | 14:17:02 |
trofi | Ah, that's a good point. Yeah, file comparison should happen. | 14:17:03 |
p14 | I'm not seeing evidence in the trace log of a comparison happening | 14:17:26 |
p14 | Though I'm only tracing daemon side.. | 14:17:32 |