Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failures on darwin when built with the sandbox enabled #3

Closed
lilyball opened this issue Sep 30, 2019 · 9 comments
Closed

Test failures on darwin when built with the sandbox enabled #3

lilyball opened this issue Sep 30, 2019 · 9 comments

Comments

@lilyball
Copy link

lilyball commented Sep 30, 2019

I just tried building the latest master (2601d1fcdc9752c025a87687e3e5b01ba78e3a72) using Nix (I edited the existing package definition) and I get a bunch of test failures on Darwin. These failures only show up with the sandbox enabled.

failures:
    autodetect_optimised
    autodetect_un_optimised
    filter_number_non_root
    filter_number_root_kept
    filter_number_root_not_kept
    filter_size_non_root
    filter_size_root_kept
    filter_size_root_not_kept
    k2_1
    optimise
    rooted_lazy
    rooted_simple
    simple
Full output
---- filter_size_root_not_kept stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [mux foo]; foo = mkNode "foo" [baz]; bar = mkNode "bar" [foo]; baz = mkNode "baz" []; mux = mkNode "mux" [baz]; frob = mkNode "frob" [];
}
Building coucou
thread 'filter_size_root_not_kept' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

---- filter_size_non_root stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     a = mkNode "a" [d]; b = mkNode "b" [d]; c = mkNode "c" [e]; d = mkNode "d" [e]; e = mkNode "e" [f]; f = mkNode "f" [];
}
Building a
thread 'filter_size_non_root' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- filter_number_root_not_kept stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [mux foo]; foo = mkNode "foo" [baz]; bar = mkNode "bar" [foo]; baz = mkNode "baz" []; mux = mkNode "mux" [baz]; frob = mkNode "frob" [];
}
Building coucou
thread 'filter_number_root_not_kept' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- filter_size_root_kept stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [mux foo]; foo = mkNode "foo" [baz]; bar = mkNode "bar" [foo]; baz = mkNode "baz" []; mux = mkNode "mux" [baz];
}
Building coucou
thread 'filter_size_root_kept' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- autodetect_optimised stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [foo]; foo = mkNode "foo" []; bar = mkNode "bar" [];
}
Building coucou
thread 'autodetect_optimised' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- filter_number_non_root stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     a = mkNode "a" [d]; b = mkNode "b" [d]; c = mkNode "c" [e]; d = mkNode "d" [e]; e = mkNode "e" [f]; f = mkNode "f" [];
}
Building a
thread 'filter_number_non_root' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- autodetect_un_optimised stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [foo]; foo = mkNode "foo" []; bar = mkNode "bar" [];
}
Building coucou
thread 'autodetect_un_optimised' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- filter_number_root_kept stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [mux foo]; foo = mkNode "foo" [baz]; bar = mkNode "bar" [foo]; baz = mkNode "baz" []; mux = mkNode "mux" [baz];
}
Building coucou
thread 'filter_number_root_kept' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- optimise stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [foo]; foo = mkNode "foo" []; bar = mkNode "bar" []; blih = mkNode "blih" [];
}
Building coucou
thread 'optimise' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- rooted_simple stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     a = mkNode "a" [b]; b = mkNode "b" []; c = mkNode "c" [h d]; d = mkNode "d" [f e]; e = mkNode "e" [g j]; f = mkNode "f" [g]; g = mkNode "g" []; h = mkNode "h" [i]; i = mkNode "i" []; j = mkNode "j" [];
}
Building a
thread 'rooted_simple' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- k2_1 stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [foo]; foo = mkNode "foo" []; bar = mkNode "bar" [foo];
}
Building coucou
thread 'k2_1' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- simple stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [mux foo]; foo = mkNode "foo" [baz]; bar = mkNode "bar" [foo]; baz = mkNode "baz" []; mux = mkNode "mux" [baz];
}
Building coucou
thread 'simple' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

---- rooted_lazy stdout ----
Derivation: with import /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/source/tests/nix/template.nix;
    rec {
     coucou = mkNode "coucou" [foo]; foo = mkNode "foo" []; bar = mkNode "bar" [];
}
Building coucou
thread 'rooted_lazy' panicked at 'expected command to succeed, got ExitStatus(ExitStatus(256))', /private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-du-unstable-2019-09-30.drv-0/nix-du-unstable-2019-09-30-vendor/cli_test_dir/src/lib.rs:484:13

  • system: "x86_64-darwin"
  • host os: Darwin 18.7.0, macOS 10.14.6
  • multi-user?: no
  • sandbox: yes
  • version: nix-env (Nix) 2.3
  • channels(lily): "nixpkgs-20.03pre194957.bef773ed53f"
  • nixpkgs: /Users/lily/.nix-defexpr/channels/nixpkgs
@symphorien
Copy link
Owner

Can you rerun the tests with RUST_BACKTRACE=1 ?
Note that travis is green so I am rather suprised: https://travis-ci.com/symphorien/nix-du

@lilyball
Copy link
Author

lilyball commented Oct 2, 2019

It turns out these test failures are due to running the tests from within the sandbox. My extra-sandbox-paths are set to /System/Library/Frameworks /System/Library/PrivateFrameworks /usr/lib /private/tmp /private/var/tmp /usr/bin/env, which should be sufficient for the impurities present in darwin builds. This makes me wonder if the tests are actually relying on having access to the real /nix folder.

@lilyball lilyball changed the title Test failures on darwin with latest master Test failures on darwin when built with the sandbox enabled Oct 2, 2019
@symphorien
Copy link
Owner

The tests use a local temporary store: https://github.com/symphorien/nix-du/blob/master/tests/common.rs#L14-L38
Do you have any more details than just the error code of nix when ran?

@symphorien
Copy link
Owner

Also, can you build nix on MacOS with sandbox? The way I run nix in the tests is inspired by nix's own tests: https://github.com/NixOS/nix/blob/master/tests/common.sh.in#L4-L13

@lilyball
Copy link
Author

lilyball commented Oct 6, 2019

I'm not sure what you mean; I included the full test output in my original issue (see "Full output"), but I don't know how to get any more info than what it says.

I'll see if I can get a Nix build done under the sandbox, but looking at your link, everything there is under a temp dir, and TMPDIR//tmp is explicitly included by Nix's sandbox.

@lilyball
Copy link
Author

lilyball commented Oct 6, 2019

I ran nix-build --option sandbox false -E 'with import <nixpkgs> {}; nix.overrideAttrs (_: { asdl = 3; })' and most of the tests passed. The failing tests weren't due to the sandbox but both due to a socket path length issue:

error: socket path '/private/var/folders/cs/l6c6g06x0974_0w5pdg8dps80000gn/T/nix-build-nix-2.3.drv-0/nix-test/var/nix/daemon-socket/socket' is too long

@lilyball
Copy link
Author

lilyball commented Oct 6, 2019

Oops I turned the sandbox off in that test, not on. How did that autocomplete? Let me run it again.

@lilyball
Copy link
Author

lilyball commented Oct 6, 2019

You're right, with the sandbox on Nix itself fails to run tests. Lots of errors

    error: opening pseudoterminal master: Operation not permitted

@lilyball
Copy link
Author

lilyball commented Oct 6, 2019

Anyway it looks like the nix-du failures are coming from Nix itself, so I'm going to go ahead and close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants