[vlc-devel] [PATCH] decoder: fix occasional deadlock on seek
Rémi Denis-Courmont
remi at remlab.net
Mon Oct 9 22:25:46 CEST 2017
Le maanantaina 9. lokakuuta 2017, 18.06.46 EEST Thomas Guillem a écrit :
> This commit fixes the following deadlock:
>
> The input thread (from input_DecoderWait()) reads p_owner->b_idle, and wait
> on the wait_acknowledge condition variable because p_owner->b_idle is false
> (and because p_owner->b_has_data is false too). The decoder thread sets
> p_owner->b_idle to true because the fifo is empty and wait on the fifo
> condition variable. Both threads are waiting each others, hence the
> deadlock.
>
> To fix this issue, signal the input thread from the decoder thread after
> setting p_owner->b_idle to true.
>
> Since predictable scheduling behavior is not required, p_owner->lock doesn't
> have to be held while signaling p_owner->wait_acknowledge.
>
> Fixes #16100
I don't know if this is right or wrong. Or rather, I know that the current
buffering algorithm is fundamentally flawed regardless of this patch. So I
find it impossible to reason about.
--
Rémi
https://www.remlab.net/
More information about the vlc-devel
mailing list