Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
目录
- Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
- 一、问题现象
- 二、运行环境(典型触发条件)
- 三、错误信息解读:关键在这一句
- 四、为什么升级 Mesa 也没用?
- 五、真正的根因:Snap 版 VLC 自带“老 Mesa”
- 六、正确解决方案(核心)
- 七、一个常见小坑:bash 路径缓存
- 八、最终验证
- 九、原理总结(一句话版)
Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
——Intel Alder Lake-P / Iris Xe + Snap VLC 的隐藏大坑
在 Ubuntu Desktop 上启动 VLC 时,报错信息如下:
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 [75100) 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 默认)
确认显卡:
lspci |grep -i vga # 输出如下: 00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics](rev 0c)三、错误信息解读:关键在这一句
Driver does not support the 0x46a6 PCI ID 这句话的含义非常明确:
- VLC 在初始化 OpenGL
- 调用的是 Mesa / libGL
- 但当前 Mesa 版本 不认识 Alder Lake-P(0x46a6)
- 导致 OpenGL 初始化失败
- VLC 在 GUI 初始化阶段直接崩溃
四、为什么升级 Mesa 也没用?
尝试升级 Mesa :
sudo add-apt-repository ppa:kisak/kisak-mesa sudoapt update sudoapt upgrade 升级后系统 Mesa 确实变新了,但 VLC 依旧崩溃。
原因非常隐蔽:
升级的是系统 Mesa,但 VLC 用的不是系统 Mesa。
五、真正的根因:Snap 版 VLC 自带“老 Mesa”
Ubuntu 默认安装 VLC 的方式是:
/snap/bin/vlc Snap 的特点是:
每个应用自带独立运行时(包括 Mesa / libGL)
与系统 Mesa 完全隔离
这意味着:
| 组件 | 使用的 Mesa |
|---|---|
| 系统(升级的) | ✔ 新 Mesa |
| Snap VLC(沙盒内) | ❌ 老 Mesa(不支持 0x46a6) |
所以:
- 无论怎么升级系统 Mesa
- Snap VLC 仍然使用它自己的老版本 Mesa
- 仍然不支持 Alder Lake-P
- 仍然 Segfault
确认是否在用 Snap 版:
which vlc 如果输出:
/snap/bin/vlc 那问题就找到了。
六、正确解决方案(核心)
卸载 Snap 版 VLC → 安装 APT 版 VLC → 使用系统 Mesa
1. 移除 Snap VLC
sudo snap remove vlc 确认已删除:
snap list |grep vlc 2. 安装 APT 版 VLC
官网也提供了命令:

sudoapt update sudoaptinstall vlc 确认路径:
which vlc 应为:
/usr/bin/vlc 3. 首次启动(可选)
QT_QPA_PLATFORM=xcb vlc --avcodec-hw=none --vout=x11 此时 VLC 应能正常打开 GUI。
七、一个常见小坑:bash 路径缓存
如果卸载 Snap 后执行:
bash: /snap/bin/vlc: No such file or directory 这是因为 bash 缓存了旧路径。
清除缓存:
hash -r 或直接重开终端。
八、最终验证
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 中被支持。