[FFmpeg-devel] Memory leak using bitstream filters with shared libs

Baptiste Coudurier baptiste.coudurier
Wed Apr 2 10:50:20 CEST 2008


Hi guys,

M?ns Rullg?rd wrote:
> Baptiste discovered a rather nasty memory leak when using a bitstream
> filter with shared libraries.
> 
> In ffmpeg.c:write_frame() the output of bitstream filters is stored in
> an AVPacket, and its destruct function is set like this (line 417):
> 
>             new_pkt.destruct= av_destruct_packet;
> 
> Later on, in av_interleave_packet_per_dts(), AVPacket.destruct is
> compared against av_destruct_packet, like this (utils.c:2439):
> 
>         if(pkt->destruct == av_destruct_packet)
> 
> The trouble here is that with shared libraries, the address of
> av_destruct_packet when used in the main executable or libs other than
> the one defining it resolves to a trampoline that calls the real
> function using a GOT entry.  As a result, this comparison is always
> false when the destruct pointer was assigned outside libavformat.
> 
> Does anyone have an idea for fixing this?
> 

Sorry, but could we try to find an acceptable solution for this issue ?

Bistream filters are basically unuseable with shared libs... This is
critical IMHO.

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
SMARTJOG SAS                                     http://www.smartjog.com
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
Phone: +33 1 49966312





More information about the ffmpeg-devel mailing list