SIGSEGV produced when vaapih264dec is used
On a container and headless environment, running the following pipeline produces a SIGSEGV
$ wget https://fate-suite.libav.org/h264-conformance/AUD_MW_E.264
$ gst-launch-1.0 filesrc location=AUD_MW_E.264 ! h264parse ! vaapih264dec ! fakesink
Setting pipeline to PAUSED ...
Caught SIGSEGV
#0 0x00007f98af2263ca in wait4 () at /usr/lib64/haswell/libc.so.6
#1 0x00007f98af48b732 in g_on_error_stack_trace ()
#2 0x000055f6e4b4daab in fault_handler_sighandler ()
#3 0x00007f98af34ff30 in <signal handler called> ()
#4 0x00007f98ae2f6a7b in XQueryExtension () at /usr/lib64/haswell/libX11.so.6
#5 0x00007f98ae2f6bc5 in XInitExtension () at /usr/lib64/haswell/libX11.so.6
#6 0x00007f98ae2e8fee in () at /usr/lib64/haswell/libX11.so.6
#7 0x00007f98ae3925e3 in XRRQueryExtension ()
#8 0x00007f98ae73f280 in check_extensions ()
#9 0x00007f98ae73f34a in gst_vaapi_display_x11_bind_display ()
#10 0x00007f98ae6f6187 in gst_vaapi_display_config ()
#11 0x00007f98ae73f57c in gst_vaapi_display_x11_new_with_display ()
#12 0x00007f98ae6c62a5 in gst_vaapi_create_display_from_handle ()
#13 0x00007f98ae6c6667 in gst_vaapi_ensure_display ()
#14 0x00007f98ae6c4212 in gst_vaapi_plugin_base_ensure_display ()
#15 0x00007f98ae6c30c2 in gst_vaapidecode_start ()
#16 0x00007f98ae94b503 in gst_video_decoder_change_state ()
#17 0x00007f98af58d85a in gst_element_change_state ()
#18 0x00007f98af58e0a4 in gst_element_set_state_func ()
#19 0x00007f98af58d5fd in gst_element_set_state ()
#20 0x00007f98af56dbf2 in gst_bin_change_state_func ()
#21 0x00007f98af5b3bc5 in gst_pipeline_change_state ()
#22 0x00007f98af58d85a in gst_element_change_state ()
#23 0x00007f98af58e1a7 in gst_element_continue_state ()
#24 0x00007f98af58da0f in gst_element_change_state ()
#25 0x00007f98af58e0a4 in gst_element_set_state_func ()
#26 0x00007f98af58d5fd in gst_element_set_state ()
#27 0x000055f6e4b4faeb in main ()
Spinning. Please run 'gdb gst-launch-1.0 1965' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
One point to notice is that this is happening on a containarized environment (docker), based on ClearLinux base image, and the following versions/gstreamer-vaapi
LIBVA_VER=2.6.0
GST_VER=1.16.0
GST_PLUGIN_VAAPI_REPO=https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-${GST_VER}.tar.xz
One more thing: it works with vaapisink
, where (IMO) the latter picks the proper backend properly: DRM
.