Subject: video acceleration/libva segfaults caused by stale mesa shader cache

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 30 Apr 2023 22:42:41 -0400

Hi,

After reinstalling someone's desktop which has support for VA-API,
'vainfo' from 'libva-utils' would consume all the memory then crash.
Other applications relying on libva would crash as well, e.g. ffmpeg (or
its users, such as vlc/jami).  Here's a sample output from VLC:

--8<---------------cut here---------------start------------->8---
vlc received_605209834855384.mp4 
VLC media player 3.0.18 Vetinari (revision 3.0.13-8-g41878ff4f2)
[000000000109d770] main libvlc: Lancement de vlc avec l'interface par défaut. Utiliser « cvlc » pour démarrer VLC sans interface.
libva info: VA-API version 1.17.0
libva info: Trying to open /gnu/store/9pypr3c3y379shbwm9ilb4pik9mkfd83-mesa-22.2.4/lib/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_17
Erreur de segmentation
--8<---------------cut here---------------end--------------->8---

After tracing the process, I noticed that the last thing it did was
loading its mesa shader cache, stored under:

--8<---------------cut here---------------start------------->8---
~/.cache/mesa_shader_cache
--8<---------------cut here---------------end--------------->8---

Deleting that directory resolved the issue.

It seems that'd be a bug in Mesa (for failing to determine that it
should have invalidated its cache going from version 21 to 22 post
core-updates merge).

-- 
Thanks,
Maxim