[vlc-devel] [PATCH] Avoid deadlock on UDP stop

Romain Vimont rom at rom1v.com
Thu May 22 17:23:06 CEST 2014


Great, we advance!

Your concern is not anymore:
 - b_finishing duplicates b_eof;
 - setting b_eof in the block callback is sufficient.

Now, it is:
 - b_eof should not be set for UDP at all;
 - my patch abuses the EOF flag.

And I totally agree with that one.

By the way, if I may (even if it is irrelevant), I think my reasoning is
still valid, if you replace "EOF" by the definition I assigned to it,
that is "there is no way that a new block can be added to the fifo queue
anymore".

But you're right, we should not set b_eof. And of course, this reasoning
does not prove that the patch fixes the root cause, but only that
setting b_eof when block_FifoGet() returns NULL was not a solution.

Le jeudi 22 mai 2014 à 18:27 +0800, Rémi Denis-Courmont a écrit :
> If net_Read() failed, then there should not even be no more calls to
> pf_block anyway. So either your alleged bug is non-existent or
> something is wrong *outside* the UDP access.

If pf_block is not supposed to be called after a net_Read() failure in
ThreadRead() (a fortiori after block_FifoWake()), then you're right, the
cause is that pf_block is called after…

Therefore, I acknowledge that my patch does not fix the root cause but
only a consequence: it prevents the deadlock even when pf_block is
called after (which should not happen in the first place).

And the root cause is probably the unsynchronized alive flags stuff…
which does not seem trivial to fix.

--
®om



More information about the vlc-devel mailing list