当尝试打开“另存为”对话框以在 KDE 上的 Visual Studio Code 中保存任何文件时(Ubuntu 24.04,该对话框不会打开,并且一个单独的进程“kdialog”开始使用 100% 的 CPU 并尝试连续分配内存直到满了并且系统完全冻结。
重现步骤(包括清除数据和重新安装 VS Code):
snap remove --purge code
rm -rf ~/.config/Code
rm -rf ~/.vscode
snap install code --classic
打开 VS Code(即使禁用所有扩展并关闭 GPU 加速)。创建一个新文件并尝试保存它。
尝试保存新文件时,VS Code 使用以下参数启动 kdialog 实例:
kdialog --attach=75497476 --title="Save As" --getsavefilename /home/user/textfile "All Files (*.txt)|Plain Text (*.bat *.cmd) [...]"
此命令如果单独运行正确运行,将打开对话框并在标准输出中返回正确的文件路径。
通过尝试将 strace 附加到 kdialog 进程 (
strace -f -p $(pgrep kdialog)
),它显示了对 brk
内核函数的无限调用,表明它确实在不断尝试扩展专用于该进程的内存。
进一步调查将 gdb 附加到 kdialog 进程,看起来该进程陷入了内部的无限循环
KBuildSycoca::recreate
。我不太确定“ksycoca”在做什么,但它看起来与 ~/.cache/.ksyscoca5*
中的一个文件相关,并且确实有一个 .lock
文件引用具有相同进程 ID (PID) 的 kdialog
。我什至尝试清除这些缓存文件,但当 kdialog 尝试重新启动时它们会被重新创建。
关于如何进一步调查以及这
ksyscoca
如何(以及是否)参与这一切,有什么想法吗?
(kdialog 版本 23.08.5,VS Code 版本 1.94.2 x64)
这里也一样(kdialog 版本 23.08.5,vscode 版本 1.94.2 x64)
这里提到的解决方法对我有用:https://github.com/microsoft/vscode/issues/231310
文件 > 首选项 > 设置 > 文本编辑器 > 文件 > 简单对话框 > 启用
另一个解决方法是更新到 Kubuntu 24.10,它使用 Qt6 而不是 Qt5,Qt5 似乎已修复此问题。不幸的是,Qt5 中还没有针对此问题的向后移植修复。
同样的问题在这里。 我不知道下面的观察是否有任何用处。 仅最新安装 Kubuntu 24.04 LTS 后最近两周的更新。
当我想尝试 2 个 python CAD 模块时,我遇到了 kdialog 的问题。 我在活动虚拟环境中安装了 cadquery 和 aspose-cad。 不用说,我没有花太多时间在文档上,只是想运行一些 hello-world 代码。
https://github.com/CadQuery/cadquery
pip install cadquery
https://pypi.org/project/aspose-cad/
pip install aspose-cad
我注意到在安装输出期间安装了很多 Qt 5 的东西,尽管我认为我的系统上有 Qt6。 在这些不成功的安装尝试之后,我无法再从 vscode 中打开文件/文件夹 kdialog。完全重新安装 vscode 并没有改变任何东西,从那以后我只能继续使用
Simple Dialog > Enable
方法。
system:
Operating System: Kubuntu 24.04
KDE Plasma Version: 5.27.11
KDE Frameworks Version: 5.115.0
Qt Version: 5.15.13
Kernel Version: 6.8.0-47-generic (64-bit)
Graphics Platform: X11
Processors: 4 × Intel® Core™ i5-4590 CPU @ 3.30GHz
Memory: 31,3 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 4600
Manufacturer: Dell Inc.
Product Name: OptiPlex 7020
System Version: 00
vscode:
Version: 1.94.2
Date: 2024-10-09T16:08:44.566Z
Electron: 30.5.1
ElectronBuildId: 10262041
Chromium: 124.0.6367.243
Node.js: 20.16.0
V8: 12.4.254.20-electron.0
OS: Linux x64 6.8.0-47-generic snap
kdialog 23.08.5