[vlc-devel] commit: Implement access_GetParentInput and demux_GetParentInput and use. ( Pierre d'Herbemont )

Pierre d'Herbemont pdherbemont at gmail.com
Wed Aug 26 16:42:01 CEST 2009


On Aug 26, 2009, at 3:21 PM, Pierre d'Herbemont wrote:

>
> On Aug 26, 2009, at 12:10 PM, xxcv wrote:
>
>> Pierre d'Herbemont wrote:
>>> Hi xxcv,
>>>
>>> This bug report is missing some important and precise info:
>>>
>>> Does reverting this commit fixes the issue?
>>> Do you have a backtrace of the crash?
>>> Could you precisely state the steps to reproduce, in numbered order?
>> Alright here we go,
>> 1. Download "Matrix.Reloaded.Trailer-640x346-XviD-1.0beta1- 
>> HE_AAC_subtitled.mkv" from somewhere on the v.o FTP, or on the  
>> internet.
>> 2. Save the attached file "Matrix.Reloaded.Trailer-640x346- 
>> XviD-1.0beta1-HE_AAC_subtitled.srt" and copy it in the same  
>> directory of the above video file so vlc is gonna load it.
>> 3. Play the video and the external subtitle file you just saved  
>> should be loaded.
>> 4. Ctrl+q or whatever it is needed to quit.
>
> Thanks! (There is no subtitle file though)

With the subtitles from the video here is what I get:
Assertion failed: (internals->i_children == 0), function  
__vlc_object_release, file ../../src/misc/objects.c, line 627. (in  
input destruction)

After reverting the two commits about access_GetParentInput and  
demux_GetParentInput, and rebuilding from make clean, the problem is  
still here so this seems not related after all.

Some investigation shows that "access", "demux", "aout", "vout" that  
are still attached to the input. There seems to be some kind of race  
conditions as it doesn't reproduce at 100%.

First, demux and access don't properly implement refcounting. If  
someone is holding a reference to it, its data might get destroyed,  
and lead to crash for free. (They should implement a destructor or set  
at list its destroyed instance variable to NULL).

Then, aout and vout are not properly detached. That means that if  
someone hold a vout, an input might end up in having a vout still  
attached.


Pierre.


0   libSystem.B.dylib             	0x90766136  
__semwait_signal_nocancel + 10
1   libSystem.B.dylib             	0x9075f013 usleep$NOCANCEL$UNIX2003  
+ 61
2   libSystem.B.dylib             	0x90776685 abort + 85
3   libSystem.B.dylib             	0x9076b3db __assert_rtn + 101
4   libvlccore.4.dylib            	0x001930ec __vlc_object_release +  
908 (objects.c:284)
5   libvlccore.4.dylib            	0x00149168  
input_resource_RequestAout + 168 (resource.c:349)
6   libvlccore.4.dylib            	0x0012e3d9 DeleteDecoder + 233  
(decoder.c:2048)
7   libvlccore.4.dylib            	0x0012ee29 input_DecoderDelete +  
265 (decoder.c:353)




More information about the vlc-devel mailing list