[Ffmpeg-devel] [PATCH] Fix leak of AVPacket data in ffserver
Bryan Mayland
bmayland
Tue Jan 24 20:02:53 CET 2006
Christian Iversen wrote:
> On Monday 23 January 2006 23:38, Bryan Mayland wrote:
>
>> Bryan Mayland wrote:
>>
>>> I was noticing that ffserver memory usage steadily grows over time.
>>> There are a couple reasons for this, but here is the big one. When in
>>> the HTTPSTATE_SEND_DATA state, we're basically in a
>>> av_read_frame()/av_write_frame() loop. If the av_write_frame doesn't
>>> need a flush (which is the case when writing low bitrate [96kbit] asf
>>> streams), nothing is written to the dynbuff and the code loops back to
>>> read more frames to fill the outgoing buffer. In this case however,
>>> the data attached to the AVPacket is not freed with a call to
>>> av_free_packet.
>>> This patch fixes that in the common case as well as in the case a
>>> dynbuff could not be allocated. NOTE: This patch must be applied
>>> *after* my ffserver_warning_clean2.diff patch.
>>>
> Is that "XXX: potential leak" connected to the fix you just sent here? In that
> case, I vote for its removal :-)
>
After further review it looks like there is no more potential leak
at that location. Attached is the patch that fixes that and uses the
proper coding standard brace placement on my new code.
There is still two pieces of code marked XXX: potential leak in the
same function. The first one will certainly still leak (since it
allocates and doesn't change state which may cause a duplicate
allocation), the second I think would be ok except for the fact that the
server will get in a loop where it never will close that connection.
There is another leak in libavformat/ffm.c:ffm_read_header() which
leaks a small amount of memory for each connection. The problem is that
when it reads the video stream info, it does a strdup on the
codec->rc_eq member. This value is usually set to a const char* from
the code segment ("tex^qComp"), therefore there is no easy way to know
if this value should be freed when the codec is closed. I have no idea
how to fix that.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ffserver_packet_leak3.diff
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20060124/a7d6e403/attachment.asc>
More information about the ffmpeg-devel
mailing list