目录
- [Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案](#Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案)
- 一、问题现象
- 二、运行环境(典型触发条件)
- 三、错误信息解读:关键在这一句
- [四、为什么升级 Mesa 也没用?](#四、为什么升级 Mesa 也没用?)
- [五、真正的根因:Snap 版 VLC 自带"老 Mesa"](#五、真正的根因:Snap 版 VLC 自带“老 Mesa”)
- 六、正确解决方案(核心)
-
-
- [1. 移除 Snap VLC](#1. 移除 Snap VLC)
- [2. 安装 APT 版 VLC](#2. 安装 APT 版 VLC)
- [3. 首次启动(可选)](#3. 首次启动(可选))
-
- [七、一个常见小坑:bash 路径缓存](#七、一个常见小坑:bash 路径缓存)
- 八、最终验证
- 九、原理总结(一句话版)
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 中被支持。