saecki / crates.nvim

A neovim plugin that helps managing crates.io dependencies
MIT License
857 stars 29 forks source link

cannot resume dead coroutine #97

Closed lswith closed 8 months ago

lswith commented 9 months ago

Description

I'm not exactly sure what is going on, but here is the error:

Error executing vim.schedule lua callback: .../.local/share/nvim/lazy/crates.nvim/lua/crates/async.lua:8: cannot resume dead coroutine
stack traceback:
stack traceback:
    [C]: in function 'error'
    .../.local/share/nvim/lazy/crates.nvim/lua/crates/async.lua:8: in function 'c'
    ...nk/.local/share/nvim/lazy/crates.nvim/lua/crates/api.lua:302: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>

I'm using the latest version and I've had to set the max_parallel to 10 as I was getting "EMFILE: too many open files"

Neovim version

NVIM v0.9.4 Build type: Release LuaJIT 2.1.1699180677 system vimrc file: "$VIM/sysinit.vim" fall-back for $VIM: "/opt/homebrew/Cellar/neovim/0.9.4/share/nvim" Run :checkhealth for more info

Operating system and version

MacOS 14.2.1 (23C71)

Expected behavior

No response

Actual behavior

Erroring

Minimal config

return {
  "hrsh7th/nvim-cmp",
  dependencies = {
    {
      "Saecki/crates.nvim",
      event = { "BufRead Cargo.toml" },
      opts = {
        max_parallel_requests = 10,
      },
    },
  },
}

Cargo.toml

[workspace] members = [ "test" ] resolver = "2"

[workspace.package] version = "0.1" edition = "2021"

[workspace.dependencies] analytics = { version = "0.2", default-features = false } anchorhash = { version = "0.2.2", default-features = false, features = [ "fastmod", "simd", ] } anyhow = { version = "1", default-features = false, features = ["std"] } archetype = { version = "0.2.0", default-features = false } async-channel = { version = "1", default-features = false } async-compression = { version = "0.4", default-features = false, features = [ "gzip", "tokio", ] } async-stripe = { version = "0.25.2", default-features = false, features = [ "runtime-tokio-hyper", "stream", "checkout", "uuid", "billing", ] } async-trait = { version = "0.1", default-features = false } aws-config = { version = "0.55", default-features = false, features = [ "native-tls", ] } aws-sdk-s3 = { version = "0.27", default-features = false } aws-sdk-sqs = { version = "0.27", default-features = false } aws-smithy-http = { version = "0.55", default-features = false, features = [ "rt-tokio", ] } axum = { version = "0.6", features = ["tokio", "http2"] } axum-auth = { version = "0.4", features = ["auth-basic"] } axum-prometheus = { version = "0.4", default-features = false, features = [ "prometheus", ] } base32 = { version = "0.4", default-features = false } base64 = { version = "0.21", default-features = false } bs58 = { version = "0.5.0", default-features = false, features = [ "std", "alloc", ] } chrono = { version = "0.4", default-features = false } clap = { version = "4", default-features = false, features = [ "derive", "env", "std", "help", ] } clickhouse = { version = "0.11.6", default-features = false, features = [ "lz4", "time", "tls", ] } criterion = { version = "0.5.1", default-features = false, features = [ "async_tokio", ] } dotenvy = { version = "0.15", default-features = false } dirs = { version = "5", default-features = false } flate2 = { version = "1.0.28", default-features = false, features = [ "rust_backend", ] } futures = { version = "0.3", default-features = false } fxhash = { version = "0.2", default-features = false } hyper = { version = "0.14", default-features = false, features = ["http1"] } hyper-tls = { version = "0.5.0", default-features = false } jwt-simple = { version = "0.11", default-features = false } k8s-openapi = { version = "0.19.0", default-features = false, features = [ "v1_24", "schemars", ] } kube = { version = "0.85", default-features = false, features = [ "client", "runtime", "derive", "openssl-tls", ] } lazy_static = { version = "1", default-features = false } moka = { version = "0.12", default-features = false, features = [ "sync", "future", ] } metrics = { version = "0.21", default-features = false } nanoid = { version = "0.4", default-features = false } non-empty-string = { version = "0.2", default-features = false } notify = { version = "6", default-features = false, features = [ "macos_fsevent", ] } oci-distribution = { version = "0.9", default-features = false, features = [ "native-tls", ] } once_cell = { version = "1", default-features = false } pbkdf2 = { version = "0.12.2", default-features = false, features = ["simple"] } prometheus-http-query = { version = "0.7", default-features = false } prost = { version = "0.11", default-features = false } rand = { version = "0.8", default-features = false, features = [ "std", "std_rng", ] } rand_core = { version = "0.6", default-features = false, features = ["std"] } regex = { version = "1", default-features = false } reqwest = { version = "0.11", default-features = false, features = [ "default-tls", "json", ] } rsa-der = { version = "0.3", default-features = false } schemars = { version = "0.8", default-features = false, features = [ "url", "chrono", "derive", ] } serde = { version = "1", default-features = false, features = [ "std", "derive", ] } serde_json = { version = "1.0", default-features = false, features = ["std"] } serde_yaml = { version = "0.9", default-features = false } sha2 = { version = "0.10", default-features = false } smartstring = { version = "1.0.1", features = ["serde"] } snap = { version = "1.1.1" } sqlx = { version = "0.6", default-features = false, features = [ "chrono", "macros", "migrate", "offline", "postgres", "runtime-tokio-native-tls", "tls", "json", "uuid", ] } static_assertions = { version = "1.1.0", default-features = false } tar = { version = "0.4.38", default-features = false } tempfile = { version = "3", default-features = false } thiserror = { version = "1", default-features = false } thingbuf = { version = "0.1.4", default-features = false, features = [ "std", "static", ] } time = { version = "0.3.30", features = [ "serde", "parsing", "formatting", "macros", ] } tokio = { version = "1", default-features = false, features = ["full"] } tokio-test = { version = "0.4", default-features = false } tokio-util = { version = "0.7", default-features = false } toml = { version = "0.8", default-features = false, features = [ "display", "parse", ] } tonic = { version = "0.9", features = ["transport", "tls", "tls-roots"] } tonic-build = { version = "0.9", default-features = false, features = [ "prost", "transport", ] } tonic-health = { version = "0.9", default-features = false, features = [ "transport", ] } tonic-reflection = { version = "0.9", default-features = false } tracing = { version = "0.1", default-features = false } tracing-subscriber = { version = "0.3", default-features = false, features = [ "std", "fmt", "json", "env-filter", "ansi", ] } tower = { version = "0.4", default-features = false } tower-http = { version = "0.4", default-features = false, features = [ "fs", "auth", "trace", ] } derive_builder = { version = "0.12.0", default-features = false, features = [ "std", ] } url = { version = "2.5", default-features = false, features = ["serde"] } urlencoding = { version = "2.1", default-features = false } uuid = { version = "1", default-features = false, features = [ "v4", "fast-rng", ] } validator = { version = "0.16.1", default-features = false, features = [ "derive", ] } walkdir = { version = "2", default-features = false } x509-certificate = { version = "0.21", default-features = false } zip = { version = "0.6", default-features = false, features = ["deflate"] }

[profile.release] lto = false codegen-units = 64

Steps to reproduce

I don't actually know how to setup a minimal configuration. I'm using lazy nvim.

saecki commented 9 months ago

I fixed the instructions in the bug report template. You can run neovim with the minimal.lua file by running nvim --clean -u minimal.lua. Can you try to create a minimal config?

lswith commented 9 months ago
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  -- bootstrap lazy.nvim
  -- stylua: ignore
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)

require("lazy").setup({
    spec = {
        -- add LazyVim and import its plugins
        { "LazyVim/LazyVim", import = "lazyvim.plugins" },
        { import = "lazyvim.plugins.extras.lang.rust" },
    },
    defaults = {
        lazy = false,
        version = false, -- always use the latest git commit
    },
})

It's "minimal" in the sense that it's just using lazynvim, but it's not minimal in the sense that I know where it's failing.