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 小时前
Ubuntu 国内镜像源配置指南(多版本常用镜像地址都有)
linux·运维·ubuntu
实心儿儿2 小时前
Linux —— 线程控制(1)
linux·运维·服务器
筠筠喵呜喵2 小时前
Linux软件开发性能优化
linux·c++·性能优化
Bruce_kaizy3 小时前
c++ linux环境编程——文件io介绍以及open 、write 、read 三剑客深度详解
linux·服务器·c++·ubuntu·操作系统·文件io
亦良Cool3 小时前
VMware虚拟机ubuntu瘦身,解决虚拟机越用越大
linux·运维·ubuntu
星辰&与海5 小时前
KVM + QEMU虚拟化方案
linux·运维
宋浮檀s5 小时前
应急响应——恶意流量&攻击行为识别
linux·运维·网络·网络安全·应急响应
REDcker5 小时前
Linux OverlayFS详解
java·linux·运维
lwx9148526 小时前
Linux系统中用户锁定后如何解锁
linux·运维·服务器
zhangrelay6 小时前
ROS 2 Lyrical Luth启程-Ubuntu26.04-
linux·笔记·学习·ubuntu