![为什么浏览器在使用 Nvidia 驱动程序的计算机上崩溃?](https://linux22.com/image/227973/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%B5%8F%E8%A7%88%E5%99%A8%E5%9C%A8%E4%BD%BF%E7%94%A8%20Nvidia%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E5%B4%A9%E6%BA%83%EF%BC%9F.png)
一段时间以来,我的系统浏览器经常崩溃(打开时连续 3 次到每小时一次)。有时整个浏览器崩溃,有时只有一个选项卡崩溃。我通常使用 Firefox,但 Chromium 浏览器崩溃的方式似乎相同。我认为发生这种情况是因为 Nvidia 专有驱动程序,因为在安装它们之前或使用 Nouveau 驱动程序时一切正常。
浏览器:Firefox、Brave、Chromium
操作系统:预装 Nvidia 驱动程序的 Fedora、EndeavourOS、PopOS
内核:从稳定的旧内核到最新内核的一切
硬件:
- 英伟达 GTX 1650 超级
- AMD 锐龙 7 5700g
- 华擎 Fatal1ty B450 主板
- 英睿达 P3 1 TB 固态硬盘
Firefox给出的崩溃原因:
- 索引越界:len 是 63 但索引是 4103
- 找不到密钥条目
- 从 CLI 运行 Firefox 会给出以下结果:
signal 11: file
/builds/worker/checkouts/gecko/ipc/chromium/src/base/process_util_posix.cc:265
[Parent 13845, IPC I/O Parent] WARNING: process 14620 exited on signal 11: file /builds/worker/checkouts/gecko/ipc/chromium/src/base/process_util_posix.cc:265
ExceptionHandler::GenerateDump cloned child 14783
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Failed to open curl lib from binary, use libcurl.so instead
我尝试过切换操作系统和浏览器、在故障排除模式下运行 Firefox、以不同方式安装驱动程序、运行不同的内核、了解错误消息。
我可以以某种方式解决这个问题吗?
编辑1:dmesg的输出
[ 25.094695] audit: type=1400 audit(1704318740.132:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=930 comm="apparmor_parser"
[ 25.094700] audit: type=1400 audit(1704318740.132:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=930 comm="apparmor_parser"
[ 25.207561] nvidia: module license 'NVIDIA' taints kernel.
[ 25.207575] nvidia: module license taints kernel.
[ 25.226226] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input11
[ 25.226525] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input12
[ 25.226663] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input13
[ 25.226777] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input14
[ 25.319491] nvidia-nvlink: Nvlink Core is being initialized, major device number 511
[ 25.320706] nvidia 0000:01:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[ 25.368293] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 545.29.06 Thu Nov 16 01:59:08 UTC 2023
[ 25.378744] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 545.29.06 Thu Nov 16 01:47:29 UTC 2023
[ 25.382645] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
[ 26.447537] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 1
[ 26.459014] nvidia_uvm: module uses symbols nvUvmInterfaceDisableAccessCntr from proprietary module nvidia, inheriting taint.
[ 26.505991] nvidia-uvm: Loaded the UVM driver, major device number 509.
编辑2:内存测试
Memtest 给了我大约 20000 个错误。我更新了 BIOS 并使用 RAM 的 BIOS 默认设置而不是 XMP 配置文件。这两个步骤都显示相同的错误。现在我只使用 2 个 16GB RAM 内存条中的 1 个进行测试,这似乎可以工作。因此,要么我取出的那个有问题,要么两者兼而有之就会出现问题。 Memtests 仍在运行,我稍后会更新
编辑3:
我的一根内存条出现错误,而另一根内存条在同一个插槽中则没有。我删除了它,现在 Firefox 运行良好。
编辑4:
一切都很完美。浏览器不会崩溃,系统总体运行得更好,自从修复此问题以来,我没有发生任何意外的事情。
答案1
由于它不是您的 GPU,因此请使用以下任一工具测试您的 RAMmemtest86+或者内存测试86至少几个周期。