[FFmpeg-devel] Memory leak using bitstream filters with shared libs
Måns Rullgård
mans
Sun Mar 9 01:05:33 CET 2008
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?
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list