GithubHelp home page GithubHelp logo

oxalica / nil Goto Github PK

View Code? Open in Web Editor NEW
1.1K 11.0 36.0 914 KB

NIx Language server, an incremental analysis assistant for writing in Nix.

License: Apache License 2.0

Rust 95.84% Nix 3.70% Shell 0.16% Vim Script 0.06% JavaScript 0.09% TypeScript 0.16%
lsp-server nix nixos nixpkgs

nil's Introduction

nil: Nix Language server

CI

An incremental analysis assistant for writing in Nix.

See release notes for changelog between releases.

See docs/features.md for an incomplete list of notable features currently implemented or planned.

See docs/configuration.md for all tunable configuration options.

Installation

This program is available in NixOS/nixpkgs under attribute nil, and is regularly updated.

  • If you use nix-env, run nix-env -iA nixpkgs.nil
  • If you use nix profile, run nix profile install nixpkgs#nil
  • If you want to compile it from source:
    1. Install stable Rust toolchain >= 1.70
    2. Install nix >= 2.4 and make sure the binary nix is in your PATH.
    3. Build and install via cargo install --git https://github.com/oxalica/nil nil

Install with Flake

This repo is also packaged via Nix flakes. The language server package is available in the default flake output github:oxalica/nil#, under bin/nil.

To install, run nix profile install github:oxalica/nil. Alternatively, you can use this repository as a flake input, and add its output to your own flake-managed system-wide and/or home configurations.

Disclaimer: The flake.lock we ship is tested in CI. If you use follows to override flake inputs, we do not guarantee that it will build.

Flake output structure (not necessarily up-to-date):

├───devShells
│   └───(...)
└───packages
    ├───x86_64-linux
    │   ├───default: package 'nil-unstable-2022-08-04'
    │   └───nil: package 'nil-unstable-2022-08-04'
    └───(...)

Editor integration

Neovim native LSP and nvim-lspconfig

We are officially supported by nvim-lspconfig, see upstream docs, also the example config for testing.

⚠️ There is a known performance issue for semantic highlighting with neovim native LSP. See more details in #83

Vim/Neovim with coc.nvim

Merge this setting into your coc-settings.json (open with :CocConfig).

{
  "languageserver": {
    "nix": {
      "command": "nil",
      "filetypes": ["nix"],
      "rootPatterns":  ["flake.nix"],
      // Uncomment these to tweak settings.
      // "settings": {
      //   "nil": {
      //     "formatting": { "command": ["nixpkgs-fmt"] }
      //   }
      // }
    }
  }
}

See the example config for testing.

Vim with vim-lsp

Add the following code to your ~/.vimrc to register the LSP server. Thanks @mitchmindtree

if executable('nil')
  autocmd User lsp_setup call lsp#register_server({
    \ 'name': 'nil',
    \ 'cmd': {server_info->['nil']},
    \ 'whitelist': ['nix'],
    \ })
endif

Emacs with lsp-mode

Add the following elisp code to your configuration. (using use-package)

(use-package lsp-mode
  :ensure t)

(use-package lsp-nix
  :ensure lsp-mode
  :after (lsp-mode)
  :demand t
  :custom
  (lsp-nix-nil-formatter ["nixpkgs-fmt"]))

(use-package nix-mode
  :hook (nix-mode . lsp-deferred)
  :ensure t)

There are various other configurations to tweak. Refer to the specific manual page for more details.

Emacs with eglot

Add the following elisp code to your configuration. (using use-package)

(use-package nix-mode)
(use-package eglot
  :config
  ;; Ensure `nil` is in your PATH.
  (add-to-list 'eglot-server-programs '(nix-mode . ("nil")))
  :hook
  (nix-mode . eglot-ensure))

VSCode/VSCodium with Nix IDE

Modify the extension's settings in your settings.json.

{
  "nix.enableLanguageServer": true, // Enable LSP.
  "nix.serverPath": "nil" // The path to the LSP server executable.

  // Uncomment these to tweak settings.
  // "nix.serverSettings": {
  //   "nil": {
  //     "formatting": { "command": ["nixpkgs-fmt"] }
  //   }
  // }
}

Add this to your "User Server Settings" in LSP Client configuration:

{
  "servers": {
    "nix": {
      "command": ["nil"],
      "url": "https://github.com/oxalica/nil",
      "highlightingModeRegex": "^Nix$"
    }
  }
}

License

"nil" is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

nil's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nil's Issues

Use rust-overlay for rustc in the default package/overlay?

nil looks really good! I'd love to try it, but I'm on the soon-to-be-previous stable nixpkgs version (22.05), which doesn't ship a new-enough rustc, and so building it results in:

error: builder for '/nix/store/6v6zadjzgb1s20a1f63d0kjqf3hxzcaq-nil-unstable-2022-11-25.drv' failed with exit code 101;
       last 10 log lines:
       > patching sources
       > Executing cargoSetupPostPatchHook
       > Validating consistency between /private/tmp/nix-build-nil-unstable-2022-11-25.drv-0/source//Cargo.lock and /private/tmp/nix-build-nil-unstable-2022-11-25.drv-0/cargo-vendor-dir/Cargo.lock
       > Finished cargoSetupPostPatchHook
       > updateAutotoolsGnuConfigScriptsPhase
       > configuring
       > building
       > Executing cargoBuildHook
       > ++ env CC_aarch64-apple-darwin=/nix/store/vkf4lk4kn8nmjvhmjxs97pvvsvs2hg98-clang-wrapper-11.1.0/bin/cc CXX_aarch64-apple-darwin=/nix/store/vkf4lk4kn8nmjvhmjxs97pvvsvs2hg98-clang-wrapper-11.1.0/bin/c++ CC_aarch64-apple-darwin=/nix/store/vkf4lk4kn8nmjvhmjxs97pvvsvs2hg98-clang-wrapper-11.1.0/bin/cc CXX_aarch64-apple-darwin=/nix/store/vkf4lk4kn8nmjvhmjxs97pvvsvs2hg98-clang-wrapper-11.1.0/bin/c++ cargo build -j 10 --target aarch64-apple-darwin --frozen --release
       > error: package `builtin v0.0.0 (/private/tmp/nix-build-nil-unstable-2022-11-25.drv-0/source/crates/builtin)` cannot be built because it requires rustc 1.62 or newer, while the currently active rustc version is 1.60.0
       For full logs, run 'nix log /nix/store/6v6zadjzgb1s20a1f63d0kjqf3hxzcaq-nil-unstable-2022-11-25.drv'.
error: 1 dependencies of derivation '/nix/store/k5jf1fl7qyb34z58p4k6sjm8m2v78mgs-system-applications.drv' failed to build
error: 1 dependencies of derivation '/nix/store/795225b9xjbpdqygcsqmaj074yw5493c-darwin-system-22.05.20221125.695b351+darwin4.6349b99.drv' failed to build

I suspect it would be useful to "pin" the rustc version to use for building nil anyway - would you be averse to a patch to that effect?

crash on save in neovim

After updating to nil version 2023-03-01 I'm experiencing this crash every time I save a file to disk.

If I can provide any further information regarding this crash I'm happy to do that.

neovim config: https://github.com/xanderio/dotfiles/blob/main/home/develop/neovim/nvim/init.lua#L131-L144

Cleanup nvim lsp.log entry

[ERROR][2023-03-08 09:33:28] .../vim/lsp/rpc.lua:734	"rpc"	"nil"	"stderr"	
"thread 'main' panicked at 'no entry found for key', crates/ide/src/base.rs:126:10
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_display
   3: core::panicking::panic_str
   4: core::option::expect_failed
   5: ide::base::FileSet::path_for_file
   6: nil::server::Server::apply_vfs_change
   7: nil::server::Server::run
   8: nil::main_loop
   9: nil::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace."

Sidenote: Love your work on nil, it's getting more amazing with every update :)

Optionally enable incomplete syntax errors

Thanks for all your work on this project, I'm loving it so far! I just have one question/suggestion;

The readme currently states that Incomplete syntax errors are currently suppressed to avoid noisy outputs during typing. I would really like to enable reporting these incomplete errors, I don't mind the noisy output and prefer a non-descriptive error rather than none. Would it be feasable to make that a configurable option?

Nix flake

I'd like to have a flake included for easy adoption. Do you have something working already or are PRs welcome? 😄

Warn about unused non-record function arguments

Proposed feature

Add a warning for simple (non-record, i.e., not of the form { xxx }) function arguments that

  1. Does not have underscore (_) preceding its name
  2. Not used in the function body

For example, the following code will have this warning (on the variable y).

x: y: x

While this code

x: _: x

or this code

x: _y: x

will not.

Synatx highlighting is messed up

When enabling the nil with lspconfig on neovim the syntax highlighting looks like this now:
image

When they should and used to look like this:
image

I believe something got messed up in the past month or so. This also only happens with neovim nightly, with stable it looks fine. I tried changing nil to rnix-lsp and the colors seem fine.

Connect & Sync

Hey,
As I started to work on noogle.dev, i started experimenting with type annotations in nix.

Currently i am writing down my ideas here
https://github.com/hsjobeki/nix-types

I will have some short talks with roberth, infinisil, etc. about my ideas.
Which could eventually lead to an rfc about typings.

We would like to have some input from the nil perspective.

so nil can understand the syntax
or use our (custom provided) parser
to allow for e.g. linting or to enhance the existing type informations from nil.

So please help me out & give me some feedback. From the nilperspective.

Thanks 🥇 you're great. I really love nil ❤️ since i discovered it.

"failed to resolve flake inputs from lock file" since a recent update

Since updating my nil flake input in the past week (maybe two weeks ago, but this past Monday seems more accurate), I've been encountering some errors relating to flake inputs in both Emacs and VS Code. Most recently, I updated earlier today since I saw some updates available (I'm excited about the CLI!), but the errors continue.

Full output from within VS Code:

2023-02-03T21:36:22.164211Z ERROR nil::server: Failed to load flake workspace: Failed to resolve flake inputs from lock file: Missing followed input "flake-parts_2"
thread 'Worker' panicked at 'no value set for FlakeGraphQuery(())', /private/tmp/nix-build-nil-unstable-2023-02-03.drv-0/cargo-vendor-dir/salsa-0.17.0-pre.2/src/input.rs:106:32
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <salsa::input::InputStorage<Q> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
   3: <DB as ide::base::SourceDatabase>::flake_graph::__shim
   4: <ide::base::SourceRootFlakeInfoQuery as salsa::plumbing::QueryFunction>::execute
   5: salsa::runtime::Runtime::execute_query_implementation
   6: salsa::derived::slot::Slot<Q,MP>::read_upgrade
   7: salsa::derived::slot::Slot<Q,MP>::read
   8: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
   9: <DB as ide::base::SourceDatabase>::source_root_flake_info::__shim
  10: <ide::def::ModuleKindQuery as salsa::plumbing::QueryFunction>::execute
  11: salsa::runtime::Runtime::execute_query_implementation
  12: salsa::derived::slot::Slot<Q,MP>::read_upgrade
  13: salsa::derived::slot::Slot<Q,MP>::read
  14: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
  15: <DB as ide::def::DefDatabase>::module_kind::__shim
  16: <ide::ty::ModuleExpectedTyQuery as salsa::plumbing::QueryFunction>::execute
  17: salsa::runtime::Runtime::execute_query_implementation
  18: salsa::derived::slot::Slot<Q,MP>::read_upgrade
  19: salsa::derived::slot::Slot<Q,MP>::read
  20: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
  21: <DB as ide::ty::TyDatabase>::module_expected_ty::__shim
  22: ide::ty::infer::infer_query
  23: salsa::runtime::Runtime::execute_query_implementation
  24: salsa::derived::slot::Slot<Q,MP>::read_upgrade
  25: salsa::derived::slot::Slot<Q,MP>::read
  26: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
  27: <DB as ide::ty::TyDatabase>::infer::__shim
  28: ide::ide::completion::complete_attrpath
  29: ide::ide::completion::completions
  30: std::panicking::try
  31: ide::ide::Analysis::completions
  32: nil::handler::completion
  33: std::panicking::try
  34: core::ops::function::FnOnce::call_once{{vtable.shim}}
  35: nil::server::Server::worker
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

And a couple minutes later on textDocument/completion:

2023-02-03T21:38:34.702716Z ERROR nil::server: Panicked in textDocument/completion: no value set for FlakeGraphQuery(())
Location: /private/tmp/nix-build-nil-unstable-2023-02-03.drv-0/cargo-vendor-dir/salsa-0.17.0-pre.2/src/input.rs:106:32
Backtrace:    0:        0x1008610b0 - std::backtrace::Backtrace::create::h7400495e7025675b
   1:        0x1006635e0 - nil::server::with_catch_unwind::{{closure}}::{{closure}}::h0a93ffacf644c2f6
   2:        0x1008633f4 - std::panicking::rust_panic_with_hook::h9612ea60473690f5
   3:        0x10083fd00 - std::panicking::begin_panic_handler::{{closure}}::h0ed5ffb8fac8e5e4
   4:        0x10083f690 - std::sys_common::backtrace::__rust_end_short_backtrace::he27c5ac6e14ee346
   5:        0x100862f10 - _rust_begin_unwind
   6:        0x1008927c8 - core::panicking::panic_fmt::h8cb04629bcd07630
   7:        0x100780260 - <salsa::input::InputStorage<Q> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::hbe73f976149ba85a
   8:        0x1007532ac - <DB as ide::base::SourceDatabase>::flake_graph::__shim::h148e05299fa58e8f
   9:        0x1007534e4 - <ide::base::SourceRootFlakeInfoQuery as salsa::plumbing::QueryFunction>::execute::ha4159f3da9800d9f
  10:        0x100745864 - salsa::runtime::Runtime::execute_query_implementation::h7880e39ac4e98315
  11:        0x10070a1bc - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h5fe2284843cdb600
  12:        0x10071c514 - salsa::derived::slot::Slot<Q,MP>::read::h440eca51d6af3d3a
  13:        0x100768198 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h59d090648d630d62
  14:        0x100753100 - <DB as ide::base::SourceDatabase>::source_root_flake_info::__shim::hbd53f7ba3c281fea
  15:        0x100754cc0 - <ide::def::ModuleKindQuery as salsa::plumbing::QueryFunction>::execute::h1d59cebd97738cdc
  16:        0x100746ce4 - salsa::runtime::Runtime::execute_query_implementation::hff7c8ce98946fde7
  17:        0x100708430 - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h2d6d5252b05f683a
  18:        0x10071f6e0 - salsa::derived::slot::Slot<Q,MP>::read::he9694427b180558f
  19:        0x10076ba4c - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::hb1acc1322b9b1a50
  20:        0x100753f04 - <DB as ide::def::DefDatabase>::module_kind::__shim::h9a6c90e2e63a6b9d
  21:        0x10079eb28 - <ide::ty::ModuleExpectedTyQuery as salsa::plumbing::QueryFunction>::execute::h37fb2615f4766950
  22:        0x100746758 - salsa::runtime::Runtime::execute_query_implementation::hc42ff644adf7038a
  23:        0x10070b08c - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h640f2fc6e6f70e50
  24:        0x10071bfcc - salsa::derived::slot::Slot<Q,MP>::read::h258a54764295c323
  25:        0x100767940 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h4b034ac2e38ea201
  26:        0x10079e98c - <DB as ide::ty::TyDatabase>::module_expected_ty::__shim::ha2386ac4e4452e8d
  27:        0x10074fb94 - ide::ty::infer::infer_query::ha22aff44ab2f6d94
  28:        0x1007463ac - salsa::runtime::Runtime::execute_query_implementation::hb60c426a330bec80
  29:        0x10070fbd4 - salsa::derived::slot::Slot<Q,MP>::read_upgrade::hafa9e365ee614bfe
  30:        0x10071ca00 - salsa::derived::slot::Slot<Q,MP>::read::h7d42921af5192020
  31:        0x1007699e8 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h776c996a55a4e645
  32:        0x10079ea70 - <DB as ide::ty::TyDatabase>::infer::__shim::hf4c29333b3997d2a
  33:        0x100774d64 - ide::ide::completion::complete_attrpath::he17fa9c7b6b74b71
  34:        0x10077377c - ide::ide::completion::completions::h6d6466ada696a5c3
  35:        0x10073ecd0 - std::panicking::try::hf4e88a17daf14597
  36:        0x100781b64 - ide::ide::Analysis::completions::h837361770e9e96b4
  37:        0x100681680 - nil::handler::completion::h323f1a4f620ce675
  38:        0x1006663c8 - std::panicking::try::h9864bb468a06eff0
  39:        0x100655a44 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9a7b79f0ba9708f5
  40:        0x10065bc60 - nil::server::Server::worker::ha87214053ca331a7
  41:        0x100639370 - std::sys_common::backtrace::__rust_begin_short_backtrace::hd4064df7eec9f1ce
  42:        0x100667488 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hbcbb9730d66bd906
  43:        0x10084dbdc - std::sys::unix::thread::Thread::new::thread_start::hca8cc49a6f4bf31a
  44:        0x198f9826c - __pthread_deallocate

At some point (in Emacs w/lsp-mode) I recall seeing a message advising me to run nix flake archive -- however that doesn't appear to fix the issues.

I'm also seeing similar errors on textDocument/definition and textDocument/hover requests. At a glance they seem likely to have the same root cause so I'll hold off on posting more error logs for now...

Aside from these issues (which I'm guessing are related to the recent improvements around flake inputs specifically), other functionality seems to be working as usual (e.g. flattening attrsets refactoring).

Edit: I'm running aarch64-darwin by the way.

Let me know if you need any more info. Thank you!

Go to Definition for attributes of nixpkgs

The Dart LSP can, iirc, accept the Dart standard library path, and provide diagnostics like Go to Definition on it, which would be awesome to have in nix. I think Rust does this, too. A common problem I encounter, while for example, contributing to nixpkgs, is that it's hard to know where a function is originally defined, and/or which arguments it accepts, lacking an API reference.

The proposed workflow would be:

  • provide a path to a local copy of nixpkgs, for example in editor settings
  • open a default.nix file of any project
  • execute go to Definition (usually ctrl-click) on pkgs.stdenv.mkDerivation for example
  • editor takes user to the definition of mkDerivation in nixpkgs
  • profit

I know that grep exists, but just by searching it's rather hard to find the actual definition, instead of the hundreds of function calls. But furthermore, I'm not sure this is possible - and would like some input on it.

Formatting support

I was wondering if it would be possible to integrate a formatter into this project, rnix-lsp for example has nixpkgs-fmt support which greatly enhances my workflow. In my opinion the best case scenario would be making the path to said formatter configurable, so people can make the decision of which formatter to use themselves.

suggestion: Packing/unpacking attrsets as a code action

Sorry for throwing a raw idea in here, but this hit me as a useful suggestion in this discussion on the discourse, and I wanted to feel the waters for whether this is the right place for such a thing: https://discourse.nixos.org/t/looking-for-nix-formatter-which-can-convert-nested-attrests-into-path-style-notation/23163

I find myself often wanting to "pack" attribute sets like this:

{
  inputs.nixpkgs.url = "nixpkgs";
  inputs.flake-utils.url = "flake-utils";
  inputs.flake-utils.inputs.nixpkgs.follows = "nixpkgs";
}

to attribute sets like this:

{
  inputs = {
    nixpkgs.url = "nixpkgs";
    flake-utils = {
      url = "flake-utils";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
}

Flake inputs are an extreme example where the latter is clearly more structured and readable, but there are counter-examples where the opposite is true, and you would really rather want the attribute set split. Therefore I don't think this is suitable as a feature for autoformatters.

I think it fits right in with a language server, though, since they're designed to help developers with little bits of automation like this.

Further considerations:

  • Sorting of these "packed" attrsets
  • Packing non-adjacent attrsets

Type inference for flake inputs

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  };

  outputs = { self, nixpkgs }: {
    
  };
}

for a flake like this, it would be nice to get completions and types for self and nixpkgs
Here is a list of attributes copied from docs: outPath, rev, revCount, lastModifiedDate, lastModified, narHash

Build broken for `aarch64-darwin`

Hi!

It seems as if aarch64-darwin builds are broken since cf182a8.

A first glance on the output seems to indicate a missing nix binary when the tests are ran:

nil-unstable>    Compiling builtin v0.0.0 (/private/tmp/nix-build-nil-unstable-2022-09-22.drv-0/source/crates/builtin)
nil-unstable> error: failed to run custom build command for `builtin v0.0.0 (/private/tmp/nix-build-nil-unstable-2022-09-22.drv-0/source/crates/builtin)`
nil-unstable> Caused by:
nil-unstable>   process didn't exit successfully: `/private/tmp/nix-build-nil-unstable-2022-09-22.drv-0/source/target/release/build/builtin-cf5af01c00b80a80/build-script-build` (exit status: 101)
nil-unstable>   --- stdout
nil-unstable>   cargo:rerun-if-changed=build.rs
nil-unstable>   --- stderr
nil-unstable>   thread 'main' panicked at 'Failed to get builtins: Os { code: 2, kind: NotFound, message: "No such file or directory" }', crates/builtin/build.rs:13:10
nil-unstable>   note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
nil-unstable> warning: build failed, waiting for other jobs to finish...

(Only showing relevant output of nix build . within the bisected first bad commit.

Latest commit on main shows the same issue.

Doesn't load flake inputs in neovim

I get this error in neovim: LSP[nil_ls] Failed to load flake workspace: Failed to resolve flake inputs from lock file: Missing followed input "nixpkgs_6"
I have no clue what this means, so idk how to fix it, idk if its a me thing, or a nil thing, so I'm making this issue.

Latest update broken

[Error - 21:14:31] Request textDocument/hover failed.
  Message: Panicked in textDocument/hover: no value set for FlakeGraphQuery(())
Location: /build/nil-2023-02-03-vendor.tar.gz/salsa/src/input.rs:106:32
Backtrace:    0:     0x561ec25a3b6f - std::backtrace::Backtrace::create::h64a0f41a21daddc8
   1:     0x561ec25a3ab0 - std::backtrace::Backtrace::force_capture::hd3cbfa107ca031f0
   2:     0x561ec2339153 - nil::server::with_catch_unwind::{{closure}}::{{closure}}::h14e5d4bd00ec6725
   3:     0x561ec25a5ea0 - std::panicking::rust_panic_with_hook::h2e8c0695c388bdee
   4:     0x561ec25821f9 - std::panicking::begin_panic_handler::{{closure}}::h192eca38cc2c43d2
   5:     0x561ec2581fdc - std::sys_common::backtrace::__rust_end_short_backtrace::ha89f9e1a3bce7ed6
   6:     0x561ec25a5a12 - rust_begin_unwind
   7:     0x561ec22c0ed3 - core::panicking::panic_fmt::h35982a44ff3b9a81
   8:     0x561ec2466b4f - <salsa::input::InputStorage<Q> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h1b97336d02d4db2b
   9:     0x561ec2435b20 - <DB as ide::base::SourceDatabase>::flake_graph::__shim::h7cbffee684272baa
  10:     0x561ec2435d59 - <ide::base::SourceRootFlakeInfoQuery as salsa::plumbing::QueryFunction>::execute::h90bba56fb62ac74d
  11:     0x561ec24c6ff7 - salsa::runtime::Runtime::execute_query_implementation::h46285f9294231d5a
  12:     0x561ec24a62dc - salsa::derived::slot::Slot<Q,MP>::read_upgrade::hf6f2f87ef3476429
  13:     0x561ec24b5388 - salsa::derived::slot::Slot<Q,MP>::read::h93b39ba7b04e4f52
  14:     0x561ec244e930 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h9dbb5fe1fa7472c2
  15:     0x561ec2435907 - <DB as ide::base::SourceDatabase>::source_root_flake_info::__shim::h10ac0fcd1d92512f
  16:     0x561ec2437b6d - <ide::def::ModuleKindQuery as salsa::plumbing::QueryFunction>::execute::hdeb2efa573014f87
  17:     0x561ec24c6dd7 - salsa::runtime::Runtime::execute_query_implementation::h35a6aa5a6d7243ae
  18:     0x561ec249bca2 - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h864d10a54a45bfa5
  19:     0x561ec24b4d42 - salsa::derived::slot::Slot<Q,MP>::read::h8ce1d7fd243a2f85
  20:     0x561ec244c270 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h4cb6735f8ddb1ede
  21:     0x561ec2436a57 - <DB as ide::def::DefDatabase>::module_kind::__shim::h1fb8259b7c86d186
  22:     0x561ec24786ac - <ide::ty::ModuleExpectedTyQuery as salsa::plumbing::QueryFunction>::execute::h7c73a2fb58380f5e
  23:     0x561ec24c6777 - salsa::runtime::Runtime::execute_query_implementation::h22f34066f631d3be
  24:     0x561ec24953b2 - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h0df3700b7b980d40
  25:     0x561ec24b2696 - salsa::derived::slot::Slot<Q,MP>::read::h1854c4bf874b0e00
  26:     0x561ec244f2e0 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::ha232eaf1a3e85190
  27:     0x561ec24784ae - <DB as ide::ty::TyDatabase>::module_expected_ty::__shim::h8029680cea87ffd9
  28:     0x561ec246c273 - <DB as ide::ty::TyDatabase>::module_expected_ty::h8296118f2b2ee682
  29:     0x561ec2431a1b - ide::ty::infer::infer_query::h8cff124c59f0edfc
  30:     0x561ec24c7af6 - salsa::runtime::Runtime::execute_query_implementation::h9581f839f9a463e8
  31:     0x561ec24969cf - salsa::derived::slot::Slot<Q,MP>::read_upgrade::h238725eb08b2746c
  32:     0x561ec24b59d2 - salsa::derived::slot::Slot<Q,MP>::read::hcd5be9056a417ef6
  33:     0x561ec244b8c0 - <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch::h4b0f9c1e3ee16452
  34:     0x561ec24785c7 - <DB as ide::ty::TyDatabase>::infer::__shim::h6935ff2e0b7c619f
  35:     0x561ec2474f9f - ide::ide::hover::hover::h59a84f05fb746778
  36:     0x561ec24695e2 - ide::ide::Analysis::hover::h57b561024f4f9062
  37:     0x561ec236b662 - nil::handler::hover::h1fc21493d8552ff9
  38:     0x561ec23331b7 - std::panicking::try::hdc21e542a86a49c4
  39:     0x561ec2320321 - core::ops::function::FnOnce::call_once{{vtable.shim}}::he4a771efa810c46f
  40:     0x561ec2324f1c - nil::server::Server::worker::h55b161a55058da5e
  41:     0x561ec22e80c8 - std::sys_common::backtrace::__rust_begin_short_backtrace::he92575a5b2bb1253
  42:     0x561ec22f8a8b - core::ops::function::FnOnce::call_once{{vtable.shim}}::hb8f0b6d920da2881
  43:     0x561ec2588b83 - std::sys::unix::thread::Thread::new::thread_start::h639fe21ed802ef53
  44:     0x7f439ce88e86 - start_thread
  45:     0x7f439cf0fd30 - clone3
  46:                0x0 - <unknown>

Support additional builtin (global) names with `scopedImport`

Due to the scopedImport-builtin, nix-files can be imported with additional symbols. I use this mechanic for constructors e.g. here: https://github.com/sivizius/nixfiles/blob/development/services/printing/default.nix: It prevents importing such files from an unintended place while reducing some boilerplate like { Constructor, ... }:/with (import ./constructors.nix)/let inherit(import ./constructors) …;/…. Perhaps rust-like attributes, e.g. #![with(Foo,Bar)], might be a solution.

Besides scopedImport, the scope of a nix-file depends on other factors like version and settings (e.g. enableNativeCode enables __importNative and __exec, pureEval enables __currentTime and __currentSystem). On the other hand one might prefer an explicit let inherit(builtins) trace; in trace … over the usage of e.g. __trace. However, let inherit(builtins) true false null; in … is too much boilerplate.

Therefore I suggest to add an option implicitScope which defaults to null but could be set to e.g. [ "builtins", "false", "null", "true" ]. The former should mean: Determine implicit scope as before; and the latter: Throw undefined_name for every symbol not defined as a parameter, in a let … in, in implicitScope or with #![with(…)]…unless with is used, which IMHO should not be used outside foo = with bar; [ baz ]; anyway. I further suggest to allow type-parameters, e.g. #![with(foo:string,bar:int->bool)] and "implicitScope": [ "builtins:set", "false:bool", "null:null", "true:bool" ].

`flake.nix` should provide an overlay

It would be nice if an overlay were exposed. As described in nix-community/rnix-lsp#77,

The rnix-lsp flake should provide a nixpkgs overlay that defines rnix-lsp, this way I can compose it into my nixpkgs without having to change any configuration that already uses pkgs.rnix-lsp. This would be done with an overlay output.

"In textDocument/completion, panicked: Bad offset" when using nil with kakoune

This error occurs when typing near the end of the document when using this with the kakoune editor and kak-lsp. A similar issue does not occur with rnix-lsp. This is a snippet of the output in kakoune's debug console:

kak-lsp: nix language server error: 'In textDocument/completion, panicked at /build/nil-2023-01-01-vendor.tar.gz/rowan/src/cursor.rs:751:9: Bad offset: range 0..624 offset 625'
kak-lsp: nix language server error: 'In textDocument/completion, panicked at /build/nil-2023-01-01-vendor.tar.gz/rowan/src/cursor.rs:751:9: Bad offset: range 0..624 offset 627'
kak-lsp: nix language server error: 'In textDocument/completion, panicked at /build/nil-2023-01-01-vendor.tar.gz/rowan/src/cursor.rs:751:9: Bad offset: range 0..624 offset 628'
kak-lsp: nix language server error: 'In textDocument/completion, panicked at /build/nil-2023-01-01-vendor.tar.gz/rowan/src/cursor.rs:751:9: Bad offset: range 0..624 offset 630

Here's an asciinema recording that displays the issue: https://asciinema.org/a/wJ3lKw7oyOQzRe1rrJYeV1xfd

Using nil 2023-01-01.

`nix fmt` support

Hi there,

I'm using vscode-nix-ide which breaks if you ask nil to format with nix fmt. Instead of formatting the file, it clears it instead. This seems to be caused by nix fmt not accepting input from stdin.

On a side note, it would be cool if nil could use self.formatter."${system}" by default.

VSCode configuration
"nix.enableLanguageServer": true,
"nix.serverPath": "nil",
"nix.serverSettings": {
  "nil": {
    "formatting": {
      "command": ["nix", "fmt"]
    }
  }
},
App versions

Fails when opening a nix file in a VSCode multi folder workspace

This error shows up in the Nix IDE extension log:

2022-09-26T22:17:53.726027Z ERROR nil: Unexpected error: URI outside workspace: file:///Users/kagrama/dev/cto-rb/spdgo/flake.nix
URI outside workspace: file:///Users/kagrama/dev/cto-rb/spdgo/flake.nix

The folder (cto-rb) is definitely within the workspace. FWIW, rnix-lsp works in this scenario with no issue.

No errors when I open the file within a workspace with spdgo as the sole folder.

VSCode "Nix IDE" doesn't pass formatter options to the server

Hi,

I bumped into your project and wanted to give it a spin as an alternative to rnix-lsp but ran into the following error when eg. trying to format a nix file:

2022-10-02T11:25:50.589363Z ERROR nil::state: Unhandled notification: Notification { method: "workspace/didChangeWatchedFiles", params: Object {"changes": Array [Object {"type": Number(2), "uri": String("file:///<redacted>/packages.nix")}]} }

I'm running on a Macbook M1 Max, using home-manager and have these versions:

nixpkgs: 854fdc68881791812eddd33b2fed94b954979a8e
vscode: 1.71.2, 74b1f979648cc44d385a2286793c226e611f59e7, x64
nix-ide: 0.1.23, 0i5zqfz2ic57z9b4v6mrs68dzhvgpnr5984srjapi0nzm30k127b

Quoted attribute names seem to cause trouble

In the following snippet I get one warning and 3 errors:

inputs: let profiles = "profiles"; in {
  "${profiles}" = import ./profiles inputs;
}
  • default.nix:2:6-14: "Undefined name"
  • default.nix:2:19-25: "Undefined name"
  • default.nix:2:37-43: "Undefined name"
  • default.nix:1:13-21: "Unused binding"

Server unexpected shutdown on non-file URI `untitled:Untitled-1` from vscode

[Error - 2:12:44 PM] Client Nix: connection to server is erroring. Shutting down server.
[Error - 2:12:44 PM] Connection to server got closed. Server will not be restarted.
[Error - 2:12:44 PM] Stopping server failed
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 2:12:44 PM] Stopping server failed
  Message: Pending response rejected since connection got disposed
  Code: -32097 
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /build/cargo-vendor-dir/lsp-server-0.7.0/src/stdio.rs:29:37
stack backtrace:
2023-02-04T21:12:44.371058Z ERROR nil: Unexpected error: Non-file URI: untitled:Untitled-1
Non-file URI: untitled:Untitled-1

Also cross-posted to vscode-nix-ide because I don't even think they should be sending you invalid URIs.

nix-community/vscode-nix-ide#323

Type system and attributes analysis

Previously mentioned in,

Without some kinds of "evaluation" going on, it's not possible to complete any meaningful attributes after . or ?. The most obvious thought is to introduce a type system with inference.

For a typical file from nixpkgs,

{ lib, stdenv, fetchurl, foo }:
stdenv.mkDerivation rec {
  pname = "hello";
  src = fetchurl {
    url = "...";
    sha256 = "...";
  };
  buildInputs = lib.optional condition foo;
  # ...
}

We have these main goals:

  • Complete attributes selection stdenv.mk|.
    • Partially implemented. Works if stdenv has known type in current file.
  • Complete attributes definition fetchurl { u| }.
    • Partially implemented. Works if fetchurl has known type in current file.
  • Complete top-level parameters { lib, stde| }.
  • Find definition information of parameter stdenv.
  • Find definition information of attribute lib.optional.
    • This implies docs for builtins.attrNames, which is not currently implemented. See also #15
  • Complete known types in flake.nix.
    • Input names. { inputs = /**/; outputs = inputs: inputs.| }
    • Attributes of inputs. #54
    • Attributes (definition-position) of flake outputs.
  • Complete outputs from flake inputs. (#76)

Since the file itself doesn't provide any information about the types of its parameter. We should somehow figure out how it is expected to be called, by either,

  1. Tracking all reference sites (via path) of this file. Then somehow do top-down type inference.
  2. Assume the top-level parameter is a subset of nixpkgs.legacyPackages.<system>. Guess parameter types by evaluating corresponding attributes via Nix invocation.

I think we'll go method (2) since it's much simpler and works in most cases.

If anyone has more ideas on this, please comments here.

Comparison with `rnix-lsp`

Or at least describe what motivated the creation of nil, since comparisons are hard to keep up-to-date when both projects are under active development.

This should help users choose which one to use.

The discourse announcement has no mention of rnix either, but when reading

aiming at better coding assistance

one often wonders: better in what way(s)?

inappropriate unused_binding diagnostic with named attribute set argument (@)

This is a general issue, but the common use-case where I'm hitting it is in a flake when utilizing the registry to avoid specifying an explicit input URL:

screenshot-20230412-180511

inputs.nixos-hardware is not used directly in the function body, but in an expression in an included file which is passed inputs (same for home-manager and helix (src). Basically, since nil doesn't analyze into included files, it should be enough if the named attribute set argument (here, inputs) is referenced in the function body. Does that make sense?

Also, thank you so much for working on nil. It has greatly improved my daily experience of working on Nix code, and with each new analysis feature it gets better. ❤️

Hover support

I'm interested in adding hover support to get type information. I'm mostly interested in the trivial cases for now. Stubbing out a hover function is not too hard, but I'm wondering what the right way to get definition information is. Like the other passes, I can see grabbing a syntax node based on the cursor position, then traversing its ancestors until we hit something interesting. That's where I get confused. Suppose we want the type of some named variable v in an attrset. { v = 3; } for example.

I can manually go up and find the parent syntax node, then get the syntaxnode of the rhs. Or I can go up to the ATTRSET node and then get the exprid corresponding to the node's name from the module map. But then that syntax node needs to be evaluated in order to get type information out, and it's unclear how to do this. Does this sort of functionality exist in the code anywhere?

Configuration with ALE?

I tried my best to get this working with A.L.E in vim and I'm having trouble. I can't seem to get past a simple errors in ALE.

function! GetCommand(buffer) abort
    return '%e' . ale#Pad('stdio')
endfunction

call ale#linter#Define('nix', {
\   'name': 'nil',
\   'lsp': 'stdio',
\   'executable': 'nil',
\   'command': function('GetCommand'),
\   'language': 'nix',
\   'project_root': '.'
\})

I also tried using nil as the command but that didn't work either. I feel like I'm missing something extremely basic.

Ignore generated files

I do use nil as the goto LSP for any project that is using Nix.

As soon as I open a single nix file, the working directory is scanned and I see how warnings appear in the "problems" pane of my editor.

These warnings are usually from generated nix expressions, be it via yarn2nix, cargo2nix or other similar tools.

Is there a way to exclude those files from the linting? Even if opened manually?

nvim-lspconfig does not forward settings to the LSP

nvim-lspconfig's nil module does not forward settings to the LSP, because of that it is currently impossible to configure the formatting command using it. This is a similar issue to #24.

I decided to file an issue here instead of upstream because their readme claims the configurations are unsupported, hope you don't mind.

I would also like to add that the link to the example configuration for nvim-lspconfig in the readme is broken, looks like that file got moved.

Support for helix editor

My current languages.toml For helix Has the following:

[[language]]
name = "nix"
scope = "source.nix"
injection-regex = "nix"
file-types = ["nix"]
shebangs = []
roots = []
auto-format = true
formatter = { command = "nixpkgs-fmt" }
comment-token = "#"
language-server = { command = "nil" }
indent = { tab-width = 2, unit = "  " }

[[grammar]]
name = "nix"
source = { git = "https://github.com/cstrahan/tree-sitter-nix", rev = "6b71a810c0acd49b980c50fc79092561f7cee307" }⏎                         snick@snick-desktop ~/C/flake (main)> 

The code completion seems to work only for what is local to the file but does not show available functions from source. Is that the expected behavior?

bug: unhelpful warning for toplevel let

When using top-level let (for an example, i haven't thoroughly tested this and I don't know if this bug occurs anywhere else, though it probably does), nil reports a warning when it should report an error:

warning: let { ... } is deprecated. Use let ... in ... instead.
This should be an error, as trying to compile such code results in

error: syntax error, unexpected LET

       at /nix/store/wlrsnx6p5kbjzjbr0m2vsnjqcm7pzfaa-source/home.nix:12:3:

           11|
           12|   let
             |   ^
           13|     emailConf = { name, maildirName, realName, address, folder, primary ? false, flavor ? "plain" }:

which isn't as helpful of an error, but nil could improve upon it by saying "top-level let is not allowed, let is only allowed in expressions."

Corresponding code actions for diagnostics

List from DiagnosticKind

  • SyntaxError

Lowering

  • InvalidDynamic
  • DuplicatedKey
  • DuplicatedParam
  • EmptyInherit: #45
  • EmptyLetIn: #63
  • LetAttrset: #64
  • UriLiteral: #69
  • MergePlainRecAttrset
  • MergeRecAttrset

Name resolution

  • UndefinedName: #41

Liveness

  • UnusedBinding
  • UnusedWith
  • UnusedRec

Build script fails on `aarch64-darwin`

Building fails with the following error on aarch64-darwin using Nix 2.12.0 with sandboxing enabled.

nix build 'github:oxalica/nil/2023-01-01'
error: builder for '/nix/store/9fniyyhgqcp4ryfwxyd2njdiq33v1zlp-nil-unstable-2022-12-31.drv' failed with exit code 101;
       last 10 log lines:
       >
       > Caused by:
       >   process didn't exit successfully: `/private/tmp/nix-build-nil-unstable-2022-12-31.drv-0/source/target/release/build/builtin-1a2db4ae3c260ecf/build-script-build` (exit status: 101)
       >   --- stdout
       >   cargo:rerun-if-changed=build.rs
       >
       >   --- stderr
       >   thread 'main' panicked at 'Failed to get builtins. Is `nix` accessible?: "Command \"nix\" \"eval\" \"--experimental-features\" \"nix-command\" \"--store\" \"dummy://\" \"--json\" \"--expr\" \"builtins.attrNames builtins\" failed: Output { statu
s: ExitStatus(unix_wait_status(6)), stdout: \"\", stderr: \"libc++abi: terminating with uncaught exception of type nix::SysError: \\u{1b}[31;1merror:\\u{1b}[0m getting status of \\u{1b}[35;1m/nix/var/nix/profiles/per-user/root/channels/nixpkgs\\u{1b}[0m:
\\u{1b}[35;1mOperation not permitted\\u{1b}[0m\\n\" }"', crates/builtin/build.rs:23:10
       >   note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Caused by:

let builtin_names: Vec<String> = Command::new("nix")
.args([
"eval",
"--experimental-features",
"nix-command",
"--store",
"dummy://",
"--json",
"--expr",
"builtins.attrNames builtins",
])
.json()
.expect("Failed to get builtins. Is `nix` accessible?");

Happy to provide additional details!

Fail to resolve `flake.lock` when `inputs.something.follows = ""`

I have a flake with a strange dependency that references to itself, which make nil reports:

ERROR nil::server: Failed to load flake workspace: Failed to resolve flake inputs from lock file: Flake input "secret-wrapper" is not locked

However, it does work (as I expected, referencing the flake itself) in nix build, nix flake update, and nix flake metadata

The flake.nix excerpt is something like this:

{
  description = "System Configuration(s)";

  inputs = {
    nixos.url = "github:NixOS/nixpkgs/nixos-unstable";
    # ...
    secret-wrapper.follows = "";
  };

  outputs = { self, secret-wrapper ? null, ... }@inputs: {
    # ...
  };
}

And the flake.lock excerpt:

{
  "nodes": {
    /* ... */
    "root": {
      "inputs": {
        "nixos": "nixos",
        "secret-wrapper": [],
        /* ... */
      }
    },
  /* ... */
}

Finally, thanks for making nil! It's a powerful LSP which helped me a lot! 👍

error: could not compile `ide` due to previous error

warning: Git tree '/Users/kelvin/workspace/works' is dirty
building the system configuration...
warning: Git tree '/Users/kelvin/workspace/works' is dirty
error: builder for '/nix/store/2rgpizp3lhs1aappc2fqc5vzwlhzn5q0-nil-unstable-2022-09-26.drv' failed with exit code 101;
       last 10 log lines:
       >     |
       > 211 |             .chain(in_let.then_some("in"))
       >     |                           ^^^^^^^^^
       >     |
       >     = note: see issue #80967 <https://github.com/rust-lang/rust/issues/80967> for more information
       >
       > For more information about this error, try `rustc --explain E0658`.
       > error: could not compile `ide` due to previous error
       > warning: build failed, waiting for other jobs to finish...
       > error: build failed
       For full logs, run 'nix log /nix/store/2rgpizp3lhs1aappc2fqc5vzwlhzn5q0-nil-unstable-2022-09-26.drv'.
error: 1 dependencies of derivation '/nix/store/a87aw2hwyhmg6nx0n307msbdd3l9gxpx-applications.drv' failed to build
error: 1 dependencies of derivation '/nix/store/nv7z32myx22ab1ibl5gm92yf6avb1q04-darwin-system-22.05.20220530.ce6aa13+darwin4.95ba7e5.drv' failed to build

Nil stops updating highlighting when typing fast

I'm using VSCode + Nix IDE plugin + Nil. When I'm editing a nix file and typing fast, nil will stop updating the highlight results in the editor window.

When this happens, nil process still runs in the background, but CPU usage is zero.

This is a gdb stacktrace of nil when this happens:

Click to expand
Thread 19 (Thread 0x7f3ca1dee640 (LWP 2042578) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 18 (Thread 0x7f3ca1fef640 (LWP 2042577) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0c81656c in std::sys::unix::locks::futex_rwlock::RwLock::read_contended ()
#3  0x0000557e0c82f1d3 in nil::handler::diagnostics ()
#4  0x0000557e0c83fa97 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#5  0x0000557e0c847efc in nil::server::Server::worker ()
#6  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#7  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#8  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#9  0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#10 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 17 (Thread 0x7f3ca21f0640 (LWP 2042576) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 16 (Thread 0x7f3ca23f1640 (LWP 2042575) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 15 (Thread 0x7f3ca25f2640 (LWP 2042574) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 14 (Thread 0x7f3ca27f3640 (LWP 2042573) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 13 (Thread 0x7f3ca29f4640 (LWP 2042572) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

--Type <RET> for more, q to quit, c to continue without paging--
Thread 12 (Thread 0x7f3ca2bf5640 (LWP 2042571) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 11 (Thread 0x7f3ca2df6640 (LWP 2042570) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 10 (Thread 0x7f3ca2ff7640 (LWP 2042569) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 9 (Thread 0x7f3ca31f8640 (LWP 2042568) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 8 (Thread 0x7f3ca33f9640 (LWP 2042567) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 7 (Thread 0x7f3ca35fa640 (LWP 2042566) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 6 (Thread 0x7f3ca37fb640 (LWP 2042565) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

--Type <RET> for more, q to quit, c to continue without paging--
Thread 5 (Thread 0x7f3ca39fc640 (LWP 2042564) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 4 (Thread 0x7f3ca3bfd640 (LWP 2042563) "Worker"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0c87a912 in crossbeam_channel::context::Context::with::{{closure}} ()
#4  0x0000557e0c87b937 in crossbeam_channel::flavors::list::Channel<T>::recv ()
#5  0x0000557e0c85ceb9 in crossbeam_channel::channel::Receiver<T>::recv ()
#6  0x0000557e0c847ee8 in nil::server::Server::worker ()
#7  0x0000557e0c86d628 in _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h5c52ba5448a93094E.llvm.11896235126976355698 ()
#8  0x0000557e0c86edef in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 3 (Thread 0x7f3ca3dfe640 (LWP 2042560) "nil"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0ca486f3 in crossbeam_channel::context::Context::wait_until ()
#4  0x0000557e0ca49010 in crossbeam_channel::context::Context::with::{{closure}} ()
#5  0x0000557e0ca4a576 in crossbeam_channel::flavors::zero::Channel<T>::send ()
#6  0x0000557e0ca46e74 in crossbeam_channel::channel::Sender<T>::send ()
#7  0x0000557e0ca4488e in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#8  0x0000557e0ca45695 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 2 (Thread 0x7f3ca3fff640 (LWP 2042559) "nil"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0ca769c5 in std::sys::unix::futex::futex_wait ()
#2  0x0000557e0ca78f59 in std::thread::park ()
#3  0x0000557e0ca486f3 in crossbeam_channel::context::Context::wait_until ()
#4  0x0000557e0ca488bd in crossbeam_channel::context::Context::with::{{closure}} ()
#5  0x0000557e0ca49eff in crossbeam_channel::flavors::zero::Channel<T>::recv ()
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x0000557e0ca46f8c in crossbeam_channel::channel::Receiver<T>::recv ()
#7  0x0000557e0ca4449b in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#8  0x0000557e0ca45825 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#9  0x0000557e0ca80053 in std::sys::unix::thread::Thread::new::thread_start ()
#10 0x00007f3ca4088e86 in start_thread () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#11 0x00007f3ca410fc60 in clone3 () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6

Thread 1 (Thread 0x7f3ca42e6940 (LWP 2042558) "nil"):
#0  0x00007f3ca4107d3d in syscall () from /nix/store/ynn1by1qdl16q6qwwh2h7zkgrn36c6i8-glibc-2.35-163/lib/libc.so.6
#1  0x0000557e0c9abfdd in parking_lot::raw_rwlock::RawRwLock::wait_for_readers ()
#2  0x0000557e0c80d53e in parking_lot::raw_rwlock::RawRwLock::lock_exclusive_slow ()
#3  0x0000557e0c9a7552 in salsa::runtime::Runtime::with_incremented_revision ()
#4  0x0000557e0c9a7435 in salsa::runtime::Runtime::synthetic_write ()
#5  0x0000557e0c937a49 in ide::ide::AnalysisHost::apply_change ()
#6  0x0000557e0c84f949 in nil::server::Server::apply_vfs_change ()
#7  0x0000557e0c84af2e in nil::server::Server::run ()
#8  0x0000557e0c83456f in nil::main_loop ()
#9  0x0000557e0c81e9f0 in nil::main ()
#10 0x0000557e0c81fa53 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#11 0x0000557e0c823ca9 in _ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h55224661bd4805a4E.llvm.15921359885502866966 ()
#12 0x0000557e0ca78985 in std::rt::lang_start_internal ()
#13 0x0000557e0c81f038 in main ()

VSCode version: 1.72.2
Nix IDE plugin version: 0.2.1
Nil version: commit 93f15d8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.