kde 上的 vscode 导致 kdialog 分配无限内存,直到 linux 冻结

问题描述 投票:0回答:1

在我的 KDE (Ubuntu 24.04) 系统上的 vscode 中,当尝试打开“另存为”对话框来保存任何文件时,该对话框无法打开,并且一个单独的进程“kdialog”开始使用 100% 的 CPU 并尝试连续分配内存直到满了并且系统完全冻结。

重现步骤(包括清除数据和重新安装vscode):

snap remove --purge code
rm -rf ~/.config/Code
rm -rf ~/.vscode
snap install code --classic

打开 vscode(即使禁用所有扩展并关闭 GPU 加速)。创建新文件。尝试保存它。

尝试保存新文件时,vscode 使用以下参数启动 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
文件引用具有相同 pid 的
kdialog
。我什至尝试清除这些缓存文件,但当 kdialog 尝试重新启动时它们会被重新创建。

关于如何进一步调查以及这

ksyscoca
如何(以及是否)参与这一切,有什么想法吗?

(kdialog 版本 23.08.5,vscode 版本 1.94.2 x64)

visual-studio-code memory-leaks kde-plasma kdialog
1个回答
0
投票

这里也一样(kdialog 版本 23.08.5,vscode 版本 1.94.2 x64)

这里提到的解决方法对我有用:https://github.com/microsoft/vscode/issues/231310

文件 > 首选项 > 设置 > 文本编辑器 > 文件 > 简单对话框 > 启用

© www.soinside.com 2019 - 2024. All rights reserved.