Pixiv - Ashima
833 字
4 分钟
修复Neovim更新0.12后出现的noice崩溃问题
前言
几天前Neovim-0.12正式推送到extra,今天更新后尝试运行:Lazy命令更新插件。
但直接退出了界面(Status Code 134)
排查
怀疑nvim-treesitter
首先怀疑是nvim-treesitter的问题
先删除~/.local/share/nvim/lazy/nvim-treesitter/下的旧文件,再更新到main分支(兼容0.12的版本)。
重新启动Neovim后弹出了Lazyvim的安装界面,但在安装结束后立刻报错退出。又尝试了直接禁用,还是报错
return { "nvim-treesitter/nvim-treesitter", main = "nvim-treesitter.configs", -- 配置setup时的模块名称 branch = "master", -- 使用master分支向下兼容Neovim 0.11 branch = "main", -- 使用main分支兼容Neovim 0.12 lazy = false, -- enabled = false, build = ":TSUpdate", opts = { ensure_installed = { "lua", "vim", "vimdoc" }, -- ensure_installed = { "java", "lua", "python", "c", "bash" }, highlight = { enable = true }, },
}怀疑显示类插件
询问Gemini后,告诉我尝试查看coredumpctl debug nvim的日志信息。
注意到有libblink_cmp_fuzzy.so,尝试禁用blink.nvim。
Message: Process 164555 (nvim) of user 1000 dumped core.
Module libblink_cmp_fuzzy.so without build-id. Stack trace of thread 164555: #0 0x00007fa7c8917a2c n/a (libc.so.6 + 0x98a2c) #1 0x00007fa7c88bd1a0 raise (libc.so.6 + 0x3e1a0) #2 0x00007fa7c88a45fe abort (libc.so.6 + 0x255fe) #3 0x00007fa7c88a5697 n/a (libc.so.6 + 0x26697) #4 0x00007fa7c88b50b2 __assert_fail (libc.so.6 + 0x360b2) #5 0x0000556a9d2c2a11 n/a (/usr/bin/nvim + 0x54a11) #6 0x0000556a9d362dbb showmode (/usr/bin/nvim + 0xf4dbb) #7 0x0000556a9d363c28 update_screen (/usr/bin/nvim + 0xf5c28) #8 0x0000556a9d4ef9e9 n/a (/usr/bin/nvim + 0x2819e9) #9 0x0000556a9d5c8406 state_enter (/usr/bin/nvim + 0x35a406) #10 0x0000556a9d4edc16 normal_enter (/usr/bin/nvim + 0x27fc16) #11 0x0000556a9d2c6468 main (/usr/bin/nvim + 0x58468) #12 0x00007fa7c88a66c1 n/a (libc.so.6 + 0x276c1) #13 0x00007fa7c88a67f9 __libc_start_main (libc.so.6 + 0x277f9) #14 0x0000556a9d2c80d5 _start (/usr/bin/nvim + 0x5a0d5)
Stack trace of thread 164561: #0 0x00007fa7c891df32 n/a (libc.so.6 + 0x9ef32) #1 0x00007fa7c891239c n/a (libc.so.6 + 0x9339c) #2 0x00007fa7c891268c n/a (libc.so.6 + 0x9368c) #3 0x00007fa7c8914e5e pthread_cond_wait (libc.so.6 + 0x95e5e) #4 0x00007fa7c8abfa1e uv_cond_wait (libuv.so.1 + 0x22a1e) #5 0x00007fa7c8ab32fb n/a (libuv.so.1 + 0x162fb) #6 0x00007fa7c891597a n/a (libc.so.6 + 0x9697a) #7 0x00007fa7c89992bc n/a (libc.so.6 + 0x11a2bc)
Stack trace of thread 164558: #0 0x00007fa7c891df32 n/a (libc.so.6 + 0x9ef32) #1 0x00007fa7c891239c n/a (libc.so.6 + 0x9339c) #2 0x00007fa7c891268c n/a (libc.so.6 + 0x9368c) #3 0x00007fa7c8914e5e pthread_cond_wait (libc.so.6 + 0x95e5e) #4 0x00007fa7c8abfa1e uv_cond_wait (libuv.so.1 + 0x22a1e) #5 0x00007fa7c8ab32fb n/a (libuv.so.1 + 0x162fb) #6 0x00007fa7c891597a n/a (libc.so.6 + 0x9697a) #7 0x00007fa7c89992bc n/a (libc.so.6 + 0x11a2bc)
Stack trace of thread 164559: #0 0x00007fa7c891df32 n/a (libc.so.6 + 0x9ef32) #1 0x00007fa7c891239c n/a (libc.so.6 + 0x9339c) #2 0x00007fa7c891268c n/a (libc.so.6 + 0x9368c) #3 0x00007fa7c8914e5e pthread_cond_wait (libc.so.6 + 0x95e5e) #4 0x00007fa7c8abfa1e uv_cond_wait (libuv.so.1 + 0x22a1e) #5 0x00007fa7c8ab32fb n/a (libuv.so.1 + 0x162fb) #6 0x00007fa7c891597a n/a (libc.so.6 + 0x9697a) #7 0x00007fa7c89992bc n/a (libc.so.6 + 0x11a2bc)
Stack trace of thread 164560: #0 0x00007fa7c891df32 n/a (libc.so.6 + 0x9ef32) #1 0x00007fa7c891239c n/a (libc.so.6 + 0x9339c) #2 0x00007fa7c891268c n/a (libc.so.6 + 0x9368c) #3 0x00007fa7c8914e5e pthread_cond_wait (libc.so.6 + 0x95e5e) #4 0x00007fa7c8abfa1e uv_cond_wait (libuv.so.1 + 0x22a1e) #5 0x00007fa7c8ab32fb n/a (libuv.so.1 + 0x162fb) #6 0x00007fa7c891597a n/a (libc.so.6 + 0x9697a) #7 0x00007fa7c89992bc n/a (libc.so.6 + 0x11a2bc) ELF object binary architecture: AMD x86-64禁用blink.nvim后仍然报错,但报错内容少了Module libblink_cmp_fuzzy.so without build-id.
有showmode,update_screen的字样,怀疑是其他显示类插件问题。
尝试禁用noice.nvim,再输入:Lazy。能正常显示了!
Message: Process 165743 (nvim) of user 1000 dumped core.
Stack trace of thread 165743: #0 0x00007fa209543a2c n/a (libc.so.6 + 0x98a2c) #1 0x00007fa2094e91a0 raise (libc.so.6 + 0x3e1a0) #2 0x00007fa2094d05fe abort (libc.so.6 + 0x255fe) #3 0x00007fa2094d1697 n/a (libc.so.6 + 0x26697) #4 0x00007fa2094e10b2 __assert_fail (libc.so.6 + 0x360b2) #5 0x0000562fe4ce4a11 n/a (/usr/bin/nvim + 0x54a11) #6 0x0000562fe4d84dbb showmode (/usr/bin/nvim + 0xf4dbb) #7 0x0000562fe4d85c28 update_screen (/usr/bin/nvim + 0xf5c28) #8 0x0000562fe4f119e9 n/a (/usr/bin/nvim + 0x2819e9) #9 0x0000562fe4fea406 state_enter (/usr/bin/nvim + 0x35a406) #10 0x0000562fe4f0fc16 normal_enter (/usr/bin/nvim + 0x27fc16) #11 0x0000562fe4ce8468 main (/usr/bin/nvim + 0x58468) #12 0x00007fa2094d26c1 n/a (libc.so.6 + 0x276c1) #13 0x00007fa2094d27f9 __libc_start_main (libc.so.6 + 0x277f9) #14 0x0000562fe4cea0d5 _start (/usr/bin/nvim + 0x5a0d5) ELF object binary architecture: AMD x86-64Gemini给的提示中,禁用消息路由后能恢复正常,应该是ext_message/cmdline导致的问题
-- 如果还是崩,尝试禁用消息路由 messages = { enabled = false },题外话
更新nvim-treesitter时还发现Gtihub repo在前几天被archieve了(
翻遍相关依赖插件好像还没找到有关ext_message的崩溃issue,都是cmdline重复出现的issue
References
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
修复Neovim更新0.12后出现的noice崩溃问题
https://blog.cedon.cn/posts/system-ops/fix-neovim012-noice/