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 中被支持。

相关推荐
小成202303202656 小时前
Linux高级02
linux·开发语言
mounter6256 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==6 小时前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长6 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5387 小时前
Linux环境变量
linux·运维·服务器
pluvium277 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员7 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
CHHC18808 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
云栖梦泽9 小时前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++
橘子编程9 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript