[vlc-devel] Deadlock on stop
Romain Vimont | ®om
rom at rom1v.com
Fri Apr 25 16:38:11 CEST 2014
A very simple piece of Java code (to be executed from an Activity) to
reproduce the deadlock with an acceptable probability:
public void test() {
MediaList playlist = libvlc.getPrimaryMediaList();
playlist.clear();
playlist.add(new Media(libvlc, myUdpMulticastUrl));
mLibvlc.playIndex(0);
new Handler().post(new Runnable() {
@Override
public void run() {
mLibvlc.stop();
}
});
}
When it works, then the video is stopped. When it deadlocks, it is
blocked on vlc_sem_wait().
You should be able to multicast any file from your desktop:
cvlc video.mkv ':sout=#udp{dst=239.0.0.1:1234}'
On the Android device, replace myUdpMulticastUrl by
"udp://@239.0.0.1:1234/".
Regards
Le vendredi 25 avril 2014 à 15:13 +0200, Romain Vimont | ®om a écrit :
> Hi,
>
> I use libvlc in an Android application, and I experience a deadlock:
> libvlc.stop() does never return in some cases.
>
> I investigated a little, and found what is blocking when calling
> libvlc_media_player_stop(…). Here is the stack of calls:
> - release_input_thread( p_mi, true );
> - input_Close( p_input_thread );
> - input_Join( p_input );
> - vlc_join( p_input->p->thread, NULL );
> - vlc_sem_wait (&handle->finished); // block forever
>
> This does not always happen, but only when I am already playing a video,
> and try to play and stop nearly simultaneously (I stop playing by
> pressing a key and start from a remote control at the same time), so it
> seems there is a race condition.
>
> Also, I reproduce it about ~25% using a UDP multicast stream
> (udp://@239.0.0.1:1234/), but I can't reproduce if I use an HTTP stream,
> the very same UDP stream proxyfied by udpxy
> (http://<udpxy>/udp/239.0.0.1:1234):
> http://www.udpxy.com/index-en.html
>
> I guess there should be a call to vlc_sem_post() somewhere to wake it
> up… Maybe you have an idea?
>
> Regards,
>
> PS: my VLC versions:
> git://git.videolan.org/vlc.git (3b7bfa1)
> git://git.videolan.org/vlc-ports/android.git (995ac44)
More information about the vlc-devel
mailing list