Skip to content

Evaluation error in flake regression test suite #11141

@edolstra

Description

@edolstra

Describe the bug

The following test has recently started failing:

$ ./flake-regressions/eval-flake.sh  flake-regressions/tests/Anomalocaridid/toolbox/0.1.269+rev-c41c2725b8099d3a37b0beab6afdc99470dfaefa
Evaluating https://api.flakehub.com/f/pinned/Anomalocaridid/toolbox/0.1.269%2Brev-c41c2725b8099d3a37b0beab6afdc99470dfaefa/018d8efd-c3f8-7d1d-adb3-b0101178042b/source.tar.gz...
Flake https://api.flakehub.com/f/pinned/Anomalocaridid/toolbox/0.1.269%2Brev-c41c2725b8099d3a37b0beab6afdc99470dfaefa/018d8efd-c3f8-7d1d-adb3-b0101178042b/source.tar.gz failed to evaluate:
warning: creating lock file '/home/eelco/Dev/nix/flake-regressions/tests/Anomalocaridid/toolbox/0.1.269+rev-c41c2725b8099d3a37b0beab6afdc99470dfaefa/tmp-flake/flake.lock': 
• Added input 'flake':
    'https://api.flakehub.com/f/pinned/Anomalocaridid/toolbox/0.1.269%2Brev-c41c2725b8099d3a37b0beab6afdc99470dfaefa/018d8efd-c3f8-7d1d-adb3-b0101178042b/source.tar.gz?narHash=sha256-915Vs2YX3p3SgUzC7EOeyvpYoiUFniNv01Uj0zJnDos%3D' (2024-02-09)
• Added input 'flake/nixpkgs':
    'github:NixOS/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0?narHash=sha256-SaTWPkI8a5xSHX/rrKzUe%2B/uVNy6zCGMXgoeMb7T9rg%3D' (2023-10-19)
error:
       … while evaluating attribute 'inventory'
         at /nix/store/badnsj7h4f7n1b2f8fnillpxqsf96ac9-source/flake.nix:113:25:
          112|                 inherit docs;
          113|                 inherit inventory;
             |                         ^
          114|               };

       … while evaluating attribute 'checks'

       … while evaluating attribute 'children'
         at /nix/store/badnsj7h4f7n1b2f8fnillpxqsf96ac9-source/flake.nix:20:48:
           19|
           20|               mkChildren = children: { inherit children; };
             |                                                ^
           21|

       … while evaluating attribute 'x86_64-linux'

       … while evaluating attribute 'children'
         at /nix/store/badnsj7h4f7n1b2f8fnillpxqsf96ac9-source/flake.nix:20:48:
           19|
           20|               mkChildren = children: { inherit children; };
             |                                                ^
           21|

       … while evaluating attribute 'whiskers'

       … while evaluating attribute 'derivation'
         at /nix/store/badnsj7h4f7n1b2f8fnillpxqsf96ac9-source/flake.nix:77:35:
           76|                                 {
           77|                                   derivation =
             |                                   ^
           78|                                     if attrs ? derivation

       … while calling the 'unsafeDiscardStringContext' builtin
         at /nix/store/badnsj7h4f7n1b2f8fnillpxqsf96ac9-source/flake.nix:79:42:
           78|                                     if attrs ? derivation
           79|                                     then builtins.unsafeDiscardStringContext attrs.derivation.drvPath
             |                                          ^
           80|                                     else null;

       … while evaluating the attribute 'derivation.drvPath'
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/customisation.nix:223:7:
          222|     in commonAttrs // {
          223|       drvPath = assert condition; drv.drvPath;
             |       ^
          224|       outPath = assert condition; drv.outPath;

       … while calling the 'derivationStrict' builtin
         at <nix/derivation-internal.nix>:9:12:
            8|
            9|   strict = derivationStrict drvAttrs;
             |            ^
           10|

       … while evaluating the derivation attribute 'name'
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:300:7:
          299|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          300|       name =
             |       ^
          301|         let

       … while evaluating the `name` attribute passed to builtins.derivationStrict

       … from call site
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:318:9:
          317|         in
          318|         lib.strings.sanitizeDerivationName (
             |         ^
          319|           if attrs ? name

       … while calling anonymous lambda
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1157:3:
         1156|   in
         1157|   string:
             |   ^
         1158|   # First detect the common case of already valid strings, to speed those up

       … while evaluating a branch condition
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1159:3:
         1158|   # First detect the common case of already valid strings, to speed those up
         1159|   if stringLength string <= 207 && okRegex string != null
             |   ^
         1160|   then unsafeDiscardStringContext string

       … in the left operand of the AND (&&) operator
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1159:33:
         1158|   # First detect the common case of already valid strings, to speed those up
         1159|   if stringLength string <= 207 && okRegex string != null
             |                                 ^
         1160|   then unsafeDiscardStringContext string

       … in the argument of the not operator
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1159:26:
         1158|   # First detect the common case of already valid strings, to speed those up
         1159|   if stringLength string <= 207 && okRegex string != null
             |                          ^
         1160|   then unsafeDiscardStringContext string

       … while calling the 'lessThan' builtin
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1159:26:
         1158|   # First detect the common case of already valid strings, to speed those up
         1159|   if stringLength string <= 207 && okRegex string != null
             |                          ^
         1160|   then unsafeDiscardStringContext string

       … while calling the 'stringLength' builtin
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/strings.nix:1159:6:
         1158|   # First detect the common case of already valid strings, to speed those up
         1159|   if stringLength string <= 207 && okRegex string != null
             |      ^
         1160|   then unsafeDiscardStringContext string

       … in the condition of the assert statement
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:323:13:
          322|             # we cannot coerce null to a string below
          323|             assert lib.assertMsg (attrs ? version && attrs.version != null) "The ‘version’ attribute cannot be null.";
             |             ^
          324|             "${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"

       … from call site
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:323:20:
          322|             # we cannot coerce null to a string below
          323|             assert lib.assertMsg (attrs ? version && attrs.version != null) "The ‘version’ attribute cannot be null.";
             |                    ^
          324|             "${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"

       … while calling 'assertMsg'
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/asserts.nix:23:5:
           22|     # Message to throw in case `pred` fails
           23|     msg:
             |     ^
           24|     pred || builtins.throw msg;

       … in the left operand of the OR (||) operator
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/asserts.nix:24:10:
           23|     msg:
           24|     pred || builtins.throw msg;
             |          ^
           25|

       … in the right operand of the AND (&&) operator
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:323:51:
          322|             # we cannot coerce null to a string below
          323|             assert lib.assertMsg (attrs ? version && attrs.version != null) "The ‘version’ attribute cannot be null.";
             |                                                   ^
          324|             "${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"

       … from call site
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/pkgs/stdenv/generic/make-derivation.nix:323:54:
          322|             # we cannot coerce null to a string below
          323|             assert lib.assertMsg (attrs ? version && attrs.version != null) "The ‘version’ attribute cannot be null.";
             |                                                      ^
          324|             "${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"

       … while calling anonymous lambda
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/attrsets.nix:846:24:
          845|     let f = attrPath:
          846|       zipAttrsWith (n: values:
             |                        ^
          847|         let here = attrPath ++ [n]; in

       … while calling the 'head' builtin
         at /nix/store/4jfc6vrkmq7z5pb651jh5b4kra5f1kwp-source/lib/attrsets.nix:850:11:
          849|         || pred here (elemAt values 1) (head values) then
          850|           head values
             |           ^
          851|         else

       error: attribute 'package' missing
       at /nix/store/lnrdwxk9d0ffv78w87swjy497js2i13s-source/nix/default.nix:11:18:
           10|         inherit pname;
           11|         inherit (memberCargoToml.package) version;
             |                  ^
           12|         src = pkgs.nix-gitignore.gitignoreSource [] ../.;

git bisect pointed to b230c01 (#11014), however since that didn't change anything in the evaluator, and mysterious "attribute missing" errors are often GC-related, I ran the test script with GC_INITIAL_HEAP_SIZE=10G and that made it succeed. So we have a GC bug somewhere.

Steps To Reproduce

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior

A clear and concise description of what you expected to happen.

nix-env --version output

Additional context

Add any other context about the problem here.

Priorities

Add 👍 to issues you find important.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions