VSCode在CentOS 7.9启动后,两个进程分别占CPU 100%,界面卡住无法点击

本文主要是介绍VSCode在CentOS 7.9启动后,两个进程分别占CPU 100%,界面卡住无法点击,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VSCode在CentOS 7.9启动后,两个进程分别占CPU 100%,界面卡住无法点击

环境描述

OS: CentOS 7.9
App: vscode 1.60.0

问题描述

通过命令/app/opensrc/vscode/1.60.0/share/code-insiders/code-insiders命令启动,terminal中刷大量的错误信息,应用界面能弹出来但是无法操作,是卡住的。
在这里插入图片描述
从另外一个terminal中查看vscode的进程,发现两个进程占用100%的CPU。
在这里插入图片描述

问题定位

使用strace追踪,发现卡住后刷的都是futex系统调用。但未定位到是在等待什么资源就绪。

于是查看了一下vscode帮助,可以使用--verbose来输出运行时的详细信息:

[thesre@icinfra ~]$ /app/opensrc/vscode/1.60.0/share/code-insiders/code-insiders --verbose |& egrep -o "Error: .* version .* not found" | sort -u
Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found
Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

可以看到,有3个symbol版本没找到。需要找一个提供满足这些符号版本的libstdc++.so.6

问题解决

加载高版本GCC(本案例加载的是gcc-10.2.0-gcc-9.4.0-xavznvl),再运行vscode,发现没有找不到的符号了,如下所示:

[thesre@icinfra ~]$ module avail gcc #查看所有gcc版本
-------------------------- /app/spack-0.16.2/share/spack/modules/linux-centos7-sandybridge ---------------------------
gcc-10.2.0-gcc-9.4.0-xavznvl  Key:
loaded  modulepath  
[thesre@icinfra ~]$ module show gcc-10.2.0-gcc-9.4.0-xavznvl # 查看是否设置了共享库路径到LD_LIBRARY_PATH,是有设置的。
-------------------------------------------------------------------
/app/spack-0.16.2/share/spack/modules/linux-centos7-sandybridge/gcc-10.2.0-gcc-9.4.0-xavznvl:module-whatis   {The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages.}
prepend-path    LD_LIBRARY_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib
prepend-path    LIBRARY_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib
prepend-path    LD_LIBRARY_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib64
prepend-path    LIBRARY_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib64
prepend-path    PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/bin
prepend-path    MANPATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/share/man
prepend-path    C_INCLUDE_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/include
prepend-path    CPLUS_INCLUDE_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/include
prepend-path    INCLUDE /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/include
prepend-path    CMAKE_PREFIX_PATH /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/
setenv          CC /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/bin/gcc
setenv          CXX /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/bin/g++
setenv          FC /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/bin/gfortran
setenv          F77 /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/bin/gfortran
-------------------------------------------------------------------
[thesre@icinfra ~]$ find /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/ -name libstdc++.so.6 #从这个gcc版本下找libstdc++.so.6
/app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib64/libstdc++.so.6
[thesre@icinfra ~]$ strings /app/spack-0.16.2/opt/spack/linux-centos7-sandybridge/gcc-9.4.0/gcc-10.2.0-xavznvl7ibbj6w7d2hvmzn3cfz3oosyn/lib64/libstdc++.so.6 | egrep 'CXXABI_1.3.9|GLIBCXX_3.4.20|GLIBCXX_3.4.21' | sort -u #从这个libstdc++.so.6文件中,能找到上面not found的三个symbol版本
CXXABI_1.3.9
GLIBCXX_3.4.20
GLIBCXX_3.4.21
[thesre@icinfra ~]$ module load gcc-10.2.0-gcc-9.4.0-xavznvl #加载gcc-10.2.0-gcc-9.4.0-xavznvl
[thesre@icinfra ~]$ /app/opensrc/vscode/1.60.0/share/code-insiders/code-insiders --verbose |& grep 'not found'
# 无输出,说明库/符号版本满足。

界面正常打开
在这里插入图片描述
再打开top看下CPU使用情况,发现还是两个进程占用近100%的CPU,但程序能够正常地跑起来了,本案例的CPU利用率高没有说明什么问题。
在这里插入图片描述

总结

不同的工具,其debug的方式不一样。部分工具未向普通用户提供debug信息;部分则提供,但要通过设置变量或指明选项,来将其显示出来。

本例中,vscode要指定--verbose来显示debug信息。

这篇关于VSCode在CentOS 7.9启动后,两个进程分别占CPU 100%,界面卡住无法点击的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/858003

相关文章

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx