[vlc-devel] [PATCH] decoder: assert that out_pool is valid from buffer_new

Steve Lhomme robux4 at ycbcr.xyz
Tue Mar 10 10:16:47 CET 2020


On 2020-03-10 10:03, Francois Cartegnie wrote:
> Le 10/03/2020 à 08:58, Thomas Guillem a écrit :
>> Once the format is configured, the out_pool need to stay valid during the life
>> time of the module or until a new format is requested.
>> ---
>>   src/input/decoder.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/src/input/decoder.c b/src/input/decoder.c
>> index 7dbc2b8f8d..be6c916342 100644
>> --- a/src/input/decoder.c
>> +++ b/src/input/decoder.c
>> @@ -650,6 +650,7 @@ static picture_t *ModuleThread_NewVideoBuffer( decoder_t *p_dec )
>>   {
>>       struct decoder_owner *p_owner = dec_get_owner( p_dec );
>>       assert( p_owner->p_vout );
>> +    assert( p_owner->out_pool );
>>   
>>       picture_t *pic = picture_pool_Wait( p_owner->out_pool );
>>       if (pic)
>>
> 
> 
> Just makes things abort somewhere else...

That's seems unrelated to this patch.

> #0  0x00007f012be83625 in raise () at /lib64/libc.so.6
> #1  0x00007f012be6c8d9 in abort () at /lib64/libc.so.6
> #2  0x00007f012be6c7a9 in _nl_load_domain.cold () at /lib64/libc.so.6
> #3  0x00007f012be7ba66 in annobin_assert.c_end () at /lib64/libc.so.6
> #4  0x00007f012c29025e in vlc_player_RemoveTimerSource
> (player=player at entry=0xbf48c0, es_source=0x7f00d0060350)
>      at ../../vlc/src/player/timer.c:382
> #5  0x00007f012c28e785 in vlc_player_input_HandleEsEvent
> (ev=0x7f00e54694f8, input=0xc38920) at ../../vlc/src/player/input.c:489
> #6  input_thread_Events (input_thread=<optimized out>,
> event=0x7f00e54694f0, user_data=0xc38920) at
> ../../vlc/src/player/input.c:738
> #7  0x00007f012c26ef19 in input_SendEvent (event=0x7f00e54694f0,
> p_input=<optimized out>) at ../../vlc/src/input/event.h:35
> #8  input_SendEventEs (es_event=<optimized out>, p_input=<optimized
> out>) at ../../vlc/src/input/event.h:246
> #9  EsOutSendEsEvent (out=out at entry=0xc407d8, es=<optimized out>,
> action=action at entry=4, forced=forced at entry=false)
>      at ../../vlc/src/input/es_out.c:1228
> #10 0x00007f012c27146c in EsOutUnselectEs (out=out at entry=0xc407d8,
> es=<optimized out>, b_update=b_update at entry=true)
>      at ../../vlc/src/input/es_out.c:2398
> #11 0x00007f012c2717ba in EsOutSelect (out=out at entry=0xc407d8,
> es=es at entry=0x7f00d002cc50, b_force=b_force at entry=true)
>      at ../../vlc/src/input/es_out.c:2442
> #12 0x00007f012c2774f0 in EsOutVaControlLocked
>      (out=out at entry=0xc407d8, source=source at entry=0xc395d0,
> i_query=i_query at entry=0, args=args at entry=0x7f00e54696c0)
>      at ../../vlc/src/input/es_out.c:3034
> #13 0x00007f012c278e1a in EsOutControl (out=0xc407d8, source=0xc395d0,
> i_query=0, args=0x7f00e54696c0)
>      at ../../vlc/src/input/es_out.c:3755
> #14 0x00007f012c2790f0 in es_out_in_vaControl (args=0x7f00e54696c0,
> i_query=<optimized out>, in=<optimized out>, p_out=<optimized out>)
>      at ../../vlc/src/input/es_out_timeshift.c:509
> #15 es_out_in_Control (p_out=<optimized out>, in=<optimized out>,
> i_query=<optimized out>) at ../../vlc/src/input/es_out_timeshift.c:509
> #16 0x00007f012c27a720 in ControlLocked (args=<optimized out>,
> i_query=<optimized out>, in=<optimized out>, p_out=0x7f00d0000fa8)
>      at ../../vlc/src/input/es_out_timeshift.c:670
> #17 Control (p_out=0x7f00d0000fa8, in=<optimized out>,
> i_query=<optimized out>, args=<optimized out>)
>      at ../../vlc/src/input/es_out_timeshift.c:758
> #18 0x00007f00dad061bd in es_out_vaControl (args=0x7f00e5469830,
> i_query=0, out=<optimized out>) at ../../vlc/include/vlc_es_out.h:175
> #19 es_out_Control(es_out_t*, int, ...) (out=<optimized out>,
> i_query=i_query at entry=0) at ../../vlc/include/vlc_es_out.h:175
> #20 0x00007f00dad070c7 in
> adaptive::FakeESOut::createOrRecycleRealEsID(adaptive::FakeESOutID*)
> (this=0x7f00d00124c0, es_id=0x7f00c000f370)
>      at ../../vlc/modules/demux/adaptive/plumbing/FakeESOut.cpp:284
> #21 0x00007f00dad04a1f in adaptive::CommandsQueue::Process(es_out_t*, long)
>      (this=0x7f00d00242d0, out=0x7f00d0000fa8, barrier=<optimized out>)
> at ../../vlc/modules/demux/adaptive/plumbing/CommandsQueue.cpp:379
> #22 0x00007f00dad0fc2a in adaptive::AbstractStream::dequeue(long, long*)
>      (this=0x7f00d0020930, nz_deadline=930216058333,
> pi_pcr=0x7f00e5469be0) at ../../vlc/modules/demux/adaptive/Streams.cpp:742
> #23 0x00007f00dad091ce in adaptive::PlaylistManager::dequeue(long, long*)
>      (this=this at entry=0x7f00d0024040, i_floor=930216008333,
> pi_nzbarrier=pi_nzbarrier at entry=0x7f00e5469c30)
>      at ../../vlc/modules/demux/adaptive/PlaylistManager.cpp:280
> #24 0x00007f00dad0a2d9 in adaptive::PlaylistManager::doDemux(long)
> (this=0x7f00d0024040, increment=50000)
>      at ../../vlc/modules/demux/adaptive/PlaylistManager.cpp:441
> #25 0x00007f00dad0951a in
> adaptive::PlaylistManager::demux_callback(stream_t*) (p_demux=<optimized
> out>)
>      at ../../vlc/modules/demux/adaptive/PlaylistManager.cpp:409
> #26 0x00007f012c2833be in demux_Demux (p_demux=0x7f00d000ff50) at
> ../../vlc/include/vlc_demux.h:297
> #27 MainLoopDemux (pb_changed=<synthetic pointer>, p_input=0xc38b20) at
> ../../vlc/src/input/input.c:550
> #28 MainLoop (p_input=p_input at entry=0xc38b20,
> b_interactive=b_interactive at entry=true) at ../../vlc/src/input/input.c:696
> #29 0x00007f012c2846b3 in Run (data=0xc38b20) at
> ../../vlc/src/input/input.c:477
> #30 0x00007f012c01b4e2 in start_thread () at /lib64/libpthread.so.0
> #31 0x00007f012bf486d3 in clone () at /lib64/libc.so.6
> 
> 
> -- 
> Francois Cartegnie
> VideoLAN - VLC Developer
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list