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

相关推荐
切糕师学AI17 分钟前
深入解析 Zsh 与 Oh-My-Zsh:打造高效现代化终端
linux·终端·zsh
切糕师学AI1 小时前
Ubuntu 下 Git 完全使用指南
linux·git·ubuntu
老黄编程2 小时前
大型工地实时数据处理与三维重构系统方案
人工智能·ubuntu·信息可视化·重构·入侵检测·大型数据集中处理
浪客灿心2 小时前
Linux网络传输层协议
linux·运维·网络
舟遥遥娓飘飘2 小时前
Nexus4CC 手机电脑同步claude code对话部署教程(基于linux系统)
linux·智能手机·电脑
05候补工程师2 小时前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
何妨呀~2 小时前
Firewalld防火墙端口配置
linux
切糕师学AI2 小时前
Vim 深度解析:从经典 vi 到现代编辑器之巅
linux·vim·文本编辑器
计算机安禾3 小时前
【Linux从入门到精通】第49篇:服务器故障排查终极指南——思路决定出路
linux·运维·服务器
古月-一个C++方向的小白3 小时前
Linux——初识文件
linux·运维·服务器