[vlc-devel] vlc locks up intermittantly

Pierre d'Herbemont pdherbemont at free.fr
Sun Jun 24 18:18:18 CEST 2007


Err, I was of course speaking of gdb and not gcc.

Pierre.

On 24 juin 07, at 16:09, Pierre d'Herbemont wrote:

> Hello Tony,
>
> Could you backtrace the different thread using gcc [1]. There are
> some part of the libvlc's playlist code that are not really thread
> safe (for instance [2]). And some other that may be the source of
> your dead lock [3]. But a backtrace would certainly help more.
>
> Pierre.
>
> [1]
> $ gcc attach <your process>
> $ thread 1
> $ bt
> $ thread 2
> $ bt
> ...
>
> [2] control/playlist.c:70
>
>          if (! playlist_was_locked( p_instance ) )
>          {
>              playlist_mark_locked( p_instance, 1 );
>              vlc_mutex_lock( &PL->object_lock );
>              did_lock = 1;
>          }
>
> Here we could mark_locked and already locked instance. Hence this is
> really not thread safe.
>
> [3]
>          p_item = playlist_ItemGetByInputId( PL, i_id,
>                                              PL->status.p_node );
>          if( !p_item )
>          {
>              if( did_lock == 1 )
>              {
>                  vlc_mutex_unlock( &PL->object_lock );
>                  playlist_mark_locked( p_instance, 0 );
>              }
>              RAISEVOID( "Unable to find item" );
>          }
> Here we could simply forget to unlock the PL object. But you should
> get an exception though.
>
>
> On 24 juin 07, at 12:02, Tony Anecito wrote:
>
>> After some more testing I noticed that when using -vvv I get a
>> debug message about adding to the playlist after I tried to play
>> the video. This happens with either files from the disk or
>> streaming videos. I am wondering if it is possible that there is a
>> race condition in vlc when calling playlist.add() then playlist.play
>> () in code. It seemed the error was less of a problem after I added
>> some print statements between the add then play function calls.
>>
>> Regards,
>> -Tony
>>
>> Tony Anecito <adanecito at yahoo.com> wrote:
>> Hi All,
>>
>> I am testing running two child windows in jvlc bindings and I am
>> seeing interesting error  condition where if I continously switch
>> back and forth between child windows that are running videos (in
>> java I have to get a new vlc instance because the switching between
>> child windows causes the jre to destroy the window ie. peer to the
>> canvas) I eventually get a condition where after executing
>> playlist.play() several times the method does not seem to return
>> and blocks the redraws of the screen.
>>
>> I get this interesting warning when playlist.play() is executed and
>> never returns from the play method. I am using 0.9.0b from just
>> before the names were changing to media-center?
>>
>> Thanks for any help. -Tony
>> [00001242] mp4 demuxer warning: elst old=0 new=1
>>
>>
>> Pinpoint customers who are looking for what you sell.
>> _______________________________________________
>> vlc-devel mailing list
>> vlc-devel at videolan.org
>> http://mailman.videolan.org/listinfo/vlc-devel
>>
>>
>> Pinpoint customers who are looking for what you sell.
>> _______________________________________________
>> vlc-devel mailing list
>> vlc-devel at videolan.org
>> http://mailman.videolan.org/listinfo/vlc-devel
>
> _______________________________________________
> vlc-devel mailing list
> vlc-devel at videolan.org
> http://mailman.videolan.org/listinfo/vlc-devel
>




More information about the vlc-devel mailing list