Skip to content

v4l2videodec: fix freeze race condition

Jonas Rebmann requested to merge jonrebm/gstreamer:v4l2-fix-freeze into main

fixes #4057 (closed)

This fixes a possible deadlock between gst_v4l2_video_dec_change_state and gst_v4l2_video_dec_loop on the buffer pool.

When stopping capture, the flushing state of the v4l2 capture buffer pool gets reverted in the processing loop after it was set via gst_v4l2_object_unlock (self->v4l2capture) (in gst_v4l2_video_dec_change_state). As a result, gst_v4l2_video_dec_loop does not return and consequently, gst_pad_stop_task gets stuck waiting for the GST_PAD_STREAM_LOCK. To circumvent this, skip acquiring the buffer pool if stopping capture.

Merge request reports

Loading