VLC player is well-designed and powerful, and I prefer this type of software designing. (Although UNIX's politically correct answer is Keep It Simple, Stupid, In the multimedia region I prefer a powerful and what-you-see-is-what-you-get interface, just the same design of those old cassette recorder.)

VLC is preinstalled with KDE, or some basic structures. I couldn't play video, but audio is OK since then.

Problem Description

Everytime I tried to play a video, e.g. MP4 with VLC, the interface just flashed and nothing displayed.

using journalctl I got

1
kernel: vlc[33836]: segfault at 168 ip 00007fb96213e11c sp 00007fb920207320 error 4 in libva.so.2.600.0[7fb96212d000+13000]

and I tried vlc -vvv to show the verbose messages, I got

1
2
3
4
5
6
7
8
9
10
[00007f82180017f0] egl_x11 gl debug: EGL version 1.4 by Mesa Project
[00007f82180017f0] egl_x11 gl debug: extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display
[00007f82180017f0] main gl debug: using opengl module "egl_x11"
[00007f8218658f00] main generic debug: looking for glconv module matching "any": 4 candidates
[00007f82180017f0] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error
[00007f82180017f0] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
[00007f82180017f0] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
[00007f8218658f00] main generic debug: using glconv module "glconv_vaapi_drm"
[00007f82180013b0] main vout display debug: using vout display module "gl"
[1] 32678 segmentation fault (core dumped) vlc -vvv

Solution

microcode problem?

Although the Archwiki page VLC have some suggestions on segmentation fault, but it indicated it as a microcode problem. That's something happens as no vlc interface shall display. I can play audio file with VLC, and after trying the method I think it's not the microcode problem.

VLC bug?

Some reports says it's a bug as VLC uses strlen() on a null pointer, but they were posted years ago and I believe it's not my problem. My VLC is fully updated.

libva error: Display drivers

Then checking the socalled vaapi and libva error, I found it might be a problem with NVIDIA GPU. Some articles point out that Intel uses vaapi and Nvidia uses vaapu. After updated nvidia, libva, the problem still happens.

Checking VLC's optional dependencies, I found

1
2
libva-vdpau-driver: vdpau backend nvidia
libva-intel-driver: video backend intel

not installed, but it seems not optional but as a must. After installing these two (my laptop uses both intel and Nvidia to display. ) drivers, my problem finally solved.