Ubuntu – VLC crashes when opening any file, Ubuntu 20.04

20.04crashsegmentation faultvlc

My VLC player crashes every time I'm trying to open any video file. Removing/purging vlc, and reinstalling it does not change anything.

I recently upgraded my distro to 20.04 from 19.10. I never had this problem on any other operating system before. I also tried to reinstall the whole operating system from scratch (because I also had some other minor issues). Then VLC worked fine on a fresh installation, but at some point it started to crash again, and now again it always crashes.

Running vlc from terminal gives the following output when I try opening a file.

[00005586d4e98290] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00005586d4f6d1c0] main audio output error: too low audio sample frequency (0)
[00007fa264ccaa20] main decoder error: failed to create audio output
[00005586d4f6d1c0] vlcpulse audio output error: digital pass-through stream connection failure: Not supported
[00005586d4f6d1c0] main audio output error: module not functional
[00007fa264ccaa20] main decoder error: failed to create audio output
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva info: va_openDriver() returns 0
Segmentation fault (core dumped)

And this is the log about that shown in the gnome-logs:

vlc[602364]: segfault at 24 ip 00007fe5731011d4 sp 00007fe546ff6c50 error 6 in iris_dri.so[7fe5726d0000+d48000]

Best Answer

There's a bug report about that here.In fact VLC is not to blame.There's a bug in the intel driver iris_dri which is a linux Direct Rendering Infrastructure driver for the intel IRIS graphics cards.

Whenever a program tries to bypass the X server and renders directly using OpenGL on the underlying GPU , it has to use that driver indirectly.And a bug causes segmentation fault when someone issues OpenGL calls.

As suggested in the bug report , you have to use the intel driver i965 instead.In order to do that you have to define the environment variable

env MESA_LOADER_DRIVER_OVERRIDE=i965

So if you want to open VLC in the terminal , you have to add that line to your ~/.bashrc file or if you want to open it from the application menu or by clicking on a media file , you have to tamper the line beginning with Exec= in the .desktop file /usr/share/applications/vlc.desktop :

Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/vlc --started-from-file %U

And if you want to set that globally for all of your applications , add this line to the file /etc/environment:

MESA_LOADER_DRIVER_OVERRIDE=i965