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

Strange nondeterministic evaluation errors/crashes when passing multiple attrpaths to nix build #2369

Closed
lheckemann opened this issue Aug 24, 2018 · 10 comments
Labels

Comments

@lheckemann
Copy link
Member

% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a function
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a list
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a list
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a function
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a list
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: attribute 'config' in selection path 'config.system.build.netbootRamdisk' not found
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a function
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: attribute 'config' in selection path 'config.system.build.netbootRamdisk' not found
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: attribute 'config' in selection path 'config.system.build.netbootRamdisk' not found
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
zsh: abort      nix build -f '<nixpkgs/nixos>' --arg configuration
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a list
% nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a function
% nix --version
nix (Nix) 2.0.4
  • system: "x86_64-linux"
  • host os: Linux 4.14.55, NixOS, 18.03.133126.4df3426f5a5 (Impala)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.0.4
  • channels(root): "nixos-18.03.133126.4df3426f5a5, nixos-unstable-18.09pre140099.f53d22edd68"
  • channels(linus): ""
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs

This seems to be a bug in nix build. nix-build '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' -A config.system.build.kernel -A config.system.build.netbootIpxeScript -A config.system.build.netbootRamdisk works fine.

@lheckemann lheckemann changed the title Strange nondeterministic evaluation errors when passing multiple args to nix build Strange nondeterministic evaluation errors when passing multiple attrpaths to nix build Aug 24, 2018
@lheckemann lheckemann changed the title Strange nondeterministic evaluation errors when passing multiple attrpaths to nix build Strange nondeterministic evaluation errors/crashes when passing multiple attrpaths to nix build Aug 24, 2018
@lheckemann
Copy link
Member Author

This doesn't seem to happen anymore, tried this again with 2.1.1.

@dtzWill
Copy link
Member

dtzWill commented Nov 15, 2018

Add a few more attributes and you'll be able to trigger it-- at least that's what I find every time I revisit this bug. Not sure where the discussion went, but since I don't see them right now:

  • happens with nix build and not with nix-build or nix-env
  • IIRC it's some boehmgc roots thing? That's where I think I left investigating this previously...

Anyway if you can't reproduce easily leaving this closed makes sense (and thanks for cleaning up stale issues!) but I'm less optimistic :(.

@colemickens
Copy link
Member

+ nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.kernel config.system.build.netbootIpxeScript config.system.build.netbootRamdisk
error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a partially applied built-in function

+ nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.kernel config.system.build.netbootIpxeScript config.system.build.netbootRamdisk
./create-ipxe-dir.sh: line 17: 41804 Aborted                 nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}

@lheckemann lheckemann reopened this Mar 28, 2019
@dtzWill
Copy link
Member

dtzWill commented Mar 28, 2019

  • nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.kernel config.system.build.netbootIpxeScript config.system.build.netbootRamdisk
    error: the expression selected by the selection path 'config.system.build.netbootRamdisk' should be a set but is a partially applied built-in function

  • nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.kernel config.system.build.netbootIpxeScript config.system.build.netbootRamdisk
    ./create-ipxe-dir.sh: line 17: 41804 Aborted nix build -f '<nixpkgs/nixos>' --arg configuration '<nixpkgs/nixos/modules/installer/netboot/netboot.nix>' config.system.build.{kernel,netbootIpxeScript,netbootRamdisk}

Does setting GC_DONT_GC=1 (as in GC_DONT_GC=1 nix build ...) fix the
problem? If so I've been seeing it as well for some time (Nix 2),
and FWIW always triggered by multiple 'installables' with attribute
paths (like in your example here).
Only building 2 or sometimes 3 "arguments" at a time also usually
works.. and in a pinch you can put it all in a single expression
with a messy one-liner or a dedicated file.

@jtojnar
Copy link
Contributor

jtojnar commented Dec 3, 2019

Disabling GC is not really a choice for commands like

nix build -f . cups-filters gnome3.nautilus-python ne mate.mate-utils python37Packages.cypari2 perl528Packages.Tirex cddlib gummi kdeApplications.okular python27Packages.pythonefl modem-manager-gui deepin.dde-daemon python37Packages.cysignals gscan2pdf python38Packages.gdal python37Packages.pdf2image udiskie gimpPlugins.gap mcgrid nuweb kdeApplications.dolphin-plugins sssd gnome3.gnome-photos bibata-cursors python27Packages.rivet gimpPlugins.texturize python38Packages.cysignals gnome3.cheese valentina python27Packages.poppler-qt5 kdevelop perl528Packages.Po4a gimpPlugins.lqrPlugin asciidoc-full gimpPlugins.focusblur dblatexFull krop okular singular kdev-php python38Packages.pdftotext python27Packages.rasterio mysql-workbench rstudio auctex kdenlive paperless gImageReader texworks plasma-desktop kdev-python peruse gimpPlugins.resynthesizer plata-theme libreoffice-still python37Packages.labelbox gazebo-headless gnome3.gnome-books deepin.dde-kwin haskellPackages.inline-r gimp-with-plugins thepeg libsForQt5.khotkeys python37Packages.pdftotext dwarf-therapist gdal_2 gimpPlugins.exposureBlend odpdown python37Packages.geopandas mapnik splix pdf2htmlEX kdeApplications.kdenlive pdf-quench numix-solarized-gtk-theme kdevelop-unwrapped mitschemeX11 rstudioWrapper python37Packages.pypandoc gimpPlugins.resynthesizer2 ripgrep-all kde-cli-tools kile perl530Packages.Tirex texmacs mate.atril skribilo gazeboSimulator.gazebo7 ipe plasma5.kmenuedit python38Packages.pdf2image pdfmod gnome3.totem hugin gimp dragon gdal gimpPlugins.gimplensfun unoconv gnome3.gnome-user-share saga plasma5.kde-cli-tools python37Packages.fpylll openorienteering-mapper fbida python27Packages.labelbox python38Packages.worldengine qpdfview tikzit qgis-unwrapped python27Packages.fiona sympow deepin.dde-dock sage dwarf-fortress-packages.dwarf-therapist-original capitaine-cursors kdeApplications.baloo-widgets R python27Packages.gdal gnome3.gnome_session python38Packages.rasterio python37Packages.fiona python38Packages.labelbox dblatex recoll python27Packages.cysignals python27Packages.worldengine pdfpc lilypond-with-fonts pdf2svg fim qgis evince pynac libreoffice-fresh-unwrapped qlandkartegt scribusUnstable poppler_min plasma-workspace apvlv libsForQt5.baloo gimpPlugins.fourier python37Packages.gdal python38Packages.pypandoc xournalpp gnome3.gnome_shell glom worldengine-cli gnome3.sushi aesop kdeApplications.kdepim-addons texlive.combined.scheme-small gimpPlugins.ufraw gnome3.gnome-tweaks natron gnome3.gnome-contacts gazeboSimulator.gazebo6 python37Packages.pythonefl xfce.tumbler texlive.combined.scheme-basic eaglemode grass pdfsandwich gnome3.gnome-terminal kmenuedit kdeApplications.dragon gnomeExtensions.gsconnect python38Packages.pplpy python37Packages.worldengine arc-theme gnome3.gnome-tweak-tool gazebo pari jbrout python38Packages.fpylll pdf2djvu kdeFrameworks.baloo elisa enlightenment.efl bibata-cursors-translucent gnome3.file-roller racket-minimal kdeApplications.gwenview diffpdf gnome3.gnome_terminal python38Packages.cypari2 kfind python38Packages.fiona plasma5.kdeplasma-addons python27Packages.rpy2 python38Packages.python-mapnik frescobaldi libreoffice-fresh giac giac-with-xcas disorderfs merkaartor eclib gimpPlugins.waveletSharpen texstudio python27Packages.pypoppler gimpPlugins.gmic racket rWrapper arx-libertatis twemoji-color-font gnome3.tracker-miners sherpa mitscheme krita tracker-miners system-config-printer deepin.deepin-desktop-base kdeApplications.k3b gnome3.gnome-control-center lilypond-unstable enlightenment.terminology powerdevil deepin.dde-api python37Packages.python-mapnik python38Packages.pythonefl autofs5 python38Packages.paperwork-backend green-pdfviewer kdeApplications.kitinerary numix-cursor-theme bibata-extra-cursors systemsettings kdeApplications.kfind epdfview yacreader plasma5.plasma-workspace lcalc poppler_utils dropbox-cli kitinerary polymake lumina.lumina-pdf python37Packages.pplpy python37Packages.osmnx asymptote qtikz paperwork pantheon.extra-elementary-contracts solfege herwig gwenview gimpPlugins.lightning texmaker pqiv xournal fgallery gnome3.gnome-boxes adapta-gtk-theme poppler gnome3.evince geeqie libLAS empathy libreoffice python38Packages.poppler-qt5 enlightenment.enlightenment gp2c libsForQt5.kfilemetadata photoqt denemo python38Packages.cartopy gazeboSimulator.gazebo6-headless diff-pdf inkscape python27Packages.cypari2 calibre openmolcas deja-dup nixnote2 deepin.dde-session-ui zathura kdeFrameworks.kfilemetadata dolphin libreoffice-unwrapped python27Packages.pdf2image python27Packages.python-mapnik emojione pantheon.elementary-session-settings python27Packages.cartopy ufraw gnome3.pomodoro sageWithDoc plasma5.plasma-desktop plasma5.khotkeys apt plasma5.systemsettings deepin.dde-file-manager python27Packages.fpylll pdfarranger python37Packages.poppler-qt5 deepin.deepin-wallpapers spark gnome3.gnome-documents haskellPackages.H gfan asciidoc-full-with-plugins poppler_gi gnome3.gnome-shell pdftag gnome3.empathy deepin.dde-control-center gnome3.nautilus python27Packages.pdftotext enblend-enfuse gmic-qt-krita libreoffice-still-unwrapped libsForQt5.poppler perl530Packages.Po4a python37Packages.paperwork-backend qcomicbook plasma5.powerdevil dwarf-fortress-packages.dwarf-fortress-full btrbk python27Packages.pypandoc enlightenment.ephoto python37Packages.cartopy python37Packages.rasterio python37Packages.rpy2 gnome3.gnome-session deepin.dde-launcher qmapshack gnome-photos deepin.deepin-desktop-schemas python27Packages.pplpy kdeplasma-addons k3b digikam python27Packages.tilestache wpa_supplicant_gui bookworm pdfgrep kdeApplications.dolphin leela rivet dwarf-fortress-packages.dwarf-therapist python27Packages.geopandas eukleides enlightenment.rage enlightenment.econnman kwin-tiling gazeboSimulator.gazebo7-headless chrome-gnome-shell openspace pympress lilypond gnome3.gnome_control_center wacomtablet --keep-going

unless one has infinite memory.

@edolstra
Copy link
Member

edolstra commented Dec 3, 2019

BTW I can't reproduce this on the flakes branch. Since a lot of the installables-handling code in nix got rewritten, it's possible it's keeping the right GC roots now.

@edolstra
Copy link
Member

edolstra commented Dec 3, 2019

Likely cause is Value * vSourceExpr in the SourceExprCommand class, which is not a GC root. And that field is gone in the flakes branch.

@stale
Copy link

stale bot commented Feb 16, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the stale label Feb 16, 2021
@stale
Copy link

stale bot commented Apr 29, 2022

I closed this issue due to inactivity. → More info

@stale stale bot closed this as completed Apr 29, 2022
@thufschmitt thufschmitt reopened this Feb 24, 2023
@lheckemann
Copy link
Member Author

I still run into crashes with bigger evaluations, where setting GC_INITIAL_HEAP_SIZE=4G has always helped so far, but it doesn't look like the same problem.

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

No branches or pull requests

6 participants