07月09, 2024

一次Windows中VSCode插件导致内存泄露问题排查

自KB5039211更新后,我的系统用一段时间内存就会占满,怀疑是内存泄露。但任务管理器中并没有进程占用大量的内存。

通过RAMMap发现,大量内存被Page Table占用(这些内存不会在任务管理器中视作进程所占用的内存):

snipaste20240709_112947.jpg

通过Processes选项卡可以看到,大量的cmd.exeWMIC.exe在疯狂占用Page Table。

snipaste20240709_113033.jpg

snipaste20240709_113023.jpg

一开始怀疑是驱动问题,于是使用poolmon,先按B以Bytes降序,再按D以Diff降序,查看实际分配和释放之间差异最大的是哪个,以确定内存泄露的是哪个。

snipaste20240709_113208.jpg

发现是SeAt这个tag,于是findstr /s /m /l "SeAt" C:\Windows\System32\drivers\*,但没有找到,即使搜索整个C:\都没有找到,所以应该不是驱动问题。

由于内存泄露是持续发生中的,因此使用ProcessExplorer查看cmd.exeWMIC.exe这两个进程的进程树,发现这两个进程均为VSCode发起的:

snipaste20240709_112910.jpg

因此事情就比较明朗了,要么是VSCode有问题,要么是VSCode的插件有问题。因此通过VSCode的扩展二等分功能,用二分法排查有问题的扩展程序是哪个,最终排查出来是Resource Monitor这个扩展有问题:

snipaste20240709_114008.jpg

禁用后问题解决。

猜测是这个扩展一直在后台使用WMIC来获取硬件状态,但是很奇怪的是我只有这一台电脑有问题,并且在KB5039211更新后才出现的问题(以前也出现过更新之后出现内存泄露,但是之前一直没发现是这个扩展的问题)。但是具体是什么原因,就不得而知了,目前网上也没有这个更新相关的问题报告,所以也不确定是Resource Monitor扩展有问题还是KB5039211更新有问题。

2024-09-24 UPDATE: 禁用该扩展后仍然有内存泄露问题,只不过症状轻一些,比较缓慢。所以本质上还是系统问题,大概率是KB5039211更新或是电脑本身的问题(是更新的问题的概率大一些,因为我另一台电脑在更新后出现了另一个问题,重装显卡驱动后才解决)。最终解决方案是重装系统,可以直接下载ISO在系统中保留原有文件进行安装,重装后问题解决。

本文链接:https://debug.fanzheng.org/post/yi-ci-Windows-zhong-VSCode-cha-jian-dao-zhi-nei-cun-xie-lu-wen-ti-pai-cha.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。