Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案

目录

Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案

------Intel Alder Lake-P / Iris Xe + Snap VLC 的隐藏大坑

在 Ubuntu Desktop 上启动 VLC 时,报错信息如下:

bash 复制代码
Driver does not support the 0x46a6 PCI ID.
libGL error: failed to create dri screen
libGL error: failed to load driver: iris
VLC media player 3.0.20 Vetinari (revision 3.0.20-1-g2617de71b6)
[00006053694bda00] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Fontconfig warning: FcPattern object width does not accept value [75 100)
Segmentation fault (core dumped)

这大概率是踩中了 Intel Iris Xe + Snap VLC + 老版本 Mesa 的组合大坑。


一、问题现象

通过 Ubuntu 自带的应用商店(官网也挂着商店链接)无论是点击图标还是终端执行 vlc,都会出现:

  • 桌面点击 VLC 无反应或闪退
  • 终端启动直接 Segmentation fault
  • 日志中出现 Driver does not support the 0x46a6 PCI ID

二、运行环境(典型触发条件)

  • Ubuntu Desktop:22.04 / 24.04 / 25.10 均可能
  • CPU / GPU
    Intel Alder Lake-P GT2(Iris Xe Graphics)
    PCI ID:0x46a6
  • VLC 版本:3.0.20(Ubuntu 默认)

确认显卡:

bash 复制代码
lspci | grep -i vga

# 输出如下:
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)

三、错误信息解读:关键在这一句

text 复制代码
Driver does not support the 0x46a6 PCI ID

这句话的含义非常明确:

  • VLC 在初始化 OpenGL
  • 调用的是 Mesa / libGL
  • 但当前 Mesa 版本 不认识 Alder Lake-P(0x46a6)
  • 导致 OpenGL 初始化失败
  • VLC 在 GUI 初始化阶段直接崩溃

四、为什么升级 Mesa 也没用?

尝试升级 Mesa :

bash 复制代码
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade

升级后系统 Mesa 确实变新了,但 VLC 依旧崩溃

原因非常隐蔽:

升级的是系统 Mesa,但 VLC 用的不是系统 Mesa。


五、真正的根因:Snap 版 VLC 自带"老 Mesa"

Ubuntu 默认安装 VLC 的方式是:

text 复制代码
/snap/bin/vlc

Snap 的特点是:

每个应用自带独立运行时(包括 Mesa / libGL)

与系统 Mesa 完全隔离

这意味着:

组件 使用的 Mesa
系统(升级的) ✔ 新 Mesa
Snap VLC(沙盒内) ❌ 老 Mesa(不支持 0x46a6)

所以:

  • 无论怎么升级系统 Mesa
  • Snap VLC 仍然使用它自己的老版本 Mesa
  • 仍然不支持 Alder Lake-P
  • 仍然 Segfault

确认是否在用 Snap 版:

bash 复制代码
which vlc

如果输出:

text 复制代码
/snap/bin/vlc

那问题就找到了。


六、正确解决方案(核心)

卸载 Snap 版 VLC → 安装 APT 版 VLC → 使用系统 Mesa

1. 移除 Snap VLC

bash 复制代码
sudo snap remove vlc

确认已删除:

bash 复制代码
snap list | grep vlc

2. 安装 APT 版 VLC

官网也提供了命令:

bash 复制代码
sudo apt update
sudo apt install vlc

确认路径:

bash 复制代码
which vlc

应为:

text 复制代码
/usr/bin/vlc

3. 首次启动(可选)

bash 复制代码
QT_QPA_PLATFORM=xcb vlc --avcodec-hw=none --vout=x11

此时 VLC 应能正常打开 GUI。


七、一个常见小坑:bash 路径缓存

如果卸载 Snap 后执行:

text 复制代码
bash: /snap/bin/vlc: No such file or directory

这是因为 bash 缓存了旧路径。

清除缓存:

bash 复制代码
hash -r

或直接重开终端。


八、最终验证

bash 复制代码
which vlc
# /usr/bin/vlc

vlc
# GUI 正常启动,无崩溃

错误全部消失:

  • ❌ Driver does not support the 0x46a6 PCI ID
  • ❌ libGL error
  • ❌ Segmentation fault

九、原理总结(一句话版)

Snap VLC 使用的是"自带的老 Mesa",APT VLC 使用的是"系统的 Mesa",而 Alder Lake-P 只在较新的 Mesa 中被支持。

相关推荐
十日十行1 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应3 天前
vi编辑器使用
linux·后端·操作系统
何中应3 天前
Linux进程无法被kill
linux·后端·操作系统
何中应3 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应3 天前
Linux常用命令
linux·操作系统
葛立国3 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
哇哈哈20213 天前
信号量和信号
linux·c++
不是二师兄的八戒3 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器