VS Code导致17.10、18.04随机完全冻结


16

请阅读:请参阅最后一点。我不认为这是与Ubuntu相关的问题,而是VS Code。

最近,在17.10 18.04(我今天才升级)下,Ubuntu将随机完全冻结。我无法移动光标或使用键盘。自然,我尝试切换到TTY会话没有成功。每次,我都必须诉诸SysRq+ REISUB,这(显然)不是首选。

从理论上讲,我已经尝试过切换图形驱动程序。我最初使用的是开源nVidia驱动程序,后来切换到专有技术无济于事。我目前正在使用开源驱动程序。

我通常只打开Firefox(不加载大量选项卡)和VS Code,最多只能打开几个文件,并打开一个终端。

有任何想法吗?

更新:系统日志没有显示的指示什么都发生,更不用说有些不妥。我不知道这是否相关,但是有时(尤其是在引导后)程序甚至要花费很多时间(> 5-10秒),甚至是命令行程序。

另一个更新!—即使禁用了所有GNOME扩展,它仍然崩溃。我尝试了XFCE,但仍然崩溃了。

简介:Ubuntu在似乎随机的时间完全冻结,在日志中没有任何痕迹,并且与任何特定的桌面环境或GNOME扩展都不相关。

(可能是最终的)更新:我确信这是VS Code的问题。我已经运行GNOME数天了,同时打开了其他Electron应用程序(Slack,Pulse等),并且没有任何冻结。我在Twitter上使用了DM的VS Code,由于他们尚未回复,因此很可能会提交错误报告。


1
从您的日志开始。这比混搭视频驱动程序容易得多。
user535733'7

@ user535733具体哪个日志?
jhpratt GOFUNDME授权

嗨,jhpratt,对我来说,这个工作是askubuntu.com/a/870235/790920
abu_bua '18

@jhpratt我建议您有条不紊地搜索/ var / log中的所有日志。应该很快就知道哪些是相关的,哪些是不相关的。当然,您正在搜索冻结发生前的几秒钟,而不仅仅是单调乏味地阅读所有内容……因此,如果您跟踪事件的确切时间,这将有所帮助。
user535733 '18

1
journalctl -b -1 -xe将在上次引导结束时显示日志。你有多少RAM?多少交换?free;swapon会告诉你。
waltinator

Answers:


8

因此,事实证明这并不是特定于Ubuntu的,但无论如何我都会在这里发布以供将来参考。

显然,即使我忽略使用该files.exclude设置的某些文件(尤其是./node_modules目录),VS Code仍会监视这些文件的更改。

要解决此问题,只需将列表从复制files.excludefiles.watcherExclude。这将阻止VS Code搜索位于node_modules或其他类似目录中的成千上万个文件。这样,它将为Chrome 留下一些内存。


嗨,@ jhpratt,这些更改是您要在VS Code的settings.json文件中进行的更改吗?
cryanbhu

1
@cryanbhu是的,这是正确的。就我所知,此信息仍然是准确的。
jhpratt GOFUNDME授权

2
我可以看到它还node_modules在,watcherExclude但我仍然面临着同样的问题。
Mohammad Faisal

**/.git/objects/****/.git/subtree-cache/****/node_modules/**都默认包含在files.watcherExclude
noraj

3

我刚遇到这个。启动后,在一个大项目中,我的系统将在约20秒后冻结并变得无响应(Ubuntu 18.04)。在启动VSCode时运行htop表明,将所有内核消耗了100%(i7-8700K),吃掉了所有内存(16gb),然后进行了交换。冻结发生在片刻之后。发生这种情况是因为扩展不正确,在我的例子中是CSS Peek。

因此,请尝试在禁用扩展名的情况下启动vscode(代码--disable-extensions),看看它是否仍会发生。如果它不能追踪错误的扩展并将它发送到地狱

我随机发生完全冻结,并花了几个小时试图找出原因。重新启动时,日志确实没有帮助。我最初以为它是nvidia驱动程序,但不是-只是VSCode扩展。



2

我遇到过同样的问题。要针对特定​​项目解决此问题,您将需要更新,.vscode/settings.json使其类似于以下内容:

{
  "python.pythonPath": "/usr/bin/python3",
  "files.exclude": {
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true,
    "**/node_modules": true,
    "**/.firebase": true
  },
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/**": true
  }
}

1
那3 files.watcherExclude是vs代码1.42.1中的默认设置
noraj

1

我遇到了同样的问题。最终,我意识到我的问题是内存不足(我的磁盘上有8GB内存和1GB交换分区)。我通过使用根目录中的文件分配其他交换空间来解决此问题:

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

这将为您的系统临时启用额外的8GB交换空间。如果有帮助,您可以在此处阅读有关不断启用新交换的更多说明。

另一个选择是:物理添加RAM或添加/扩大交换分区。

我使用新的交换文件作为文件,因为我得到了luks + lvm加密系统,并且调整现有交换分区的大小对于我来说太复杂且有风险。

PS我得到了Ubuntu 18.04


可能没有人会因为“文本编辑器”而花时间/金钱来增加RAM。
matousc

@matousc很好,您是对的,因此这是第二个选择。首先是添加交换
Artem

@matousc VS Code是成熟的IDE以及文本编辑器。
主教,

1

运行VSC时,我还遭受随机系统崩溃的困扰。甚至尝试在没有扩展的情况下开始使用,这完全没有帮助。几次,我的系统在启动VSC时冻结。

但是,我检查了日志,发现这些崩溃可能与图形驱动程序(NVidia GTX 660)相关。

我的解决方案:从Nouveau切换到专有驱动程序(我选择了元软件包)

顺便说一句:使用Ubuntu 18.04

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.