[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