[FFmpeg-trac] #4819(avcodec:reopened): av_register_all() memory leak

FFmpeg trac at avcodec.org
Wed Sep 2 15:35:38 CEST 2015


#4819: av_register_all() memory leak
--------------------------------------+------------------------------------
             Reporter:  joeallen      |                    Owner:
                 Type:  defect        |                   Status:  reopened
             Priority:  normal        |                Component:  avcodec
              Version:  unspecified   |               Resolution:
             Keywords:  libx265 leak  |               Blocked By:
             Blocking:                |  Reproduced by developer:  0
Analyzed by developer:  0             |
--------------------------------------+------------------------------------
Changes (by rbultje):

 * status:  closed => reopened
 * resolution:  invalid =>


Comment:

 So, here's what I take home from it. In AVCodec, we have an
 init_static_data callback that can allocate, well, static data, and this
 is called for each codec that implements it during avregister_all. We have
 no way of free'ing such data: we don't have avunregister_all, and we don't
 have a deinit_static_data callback in AVCodec. We need both of these, and
 that's what this ticket is for.

 Additionally, for this specific issue, libx265.c uses this
 init_static_data callback to call x265_api_get, which calls dlopen and
 leaks the local variable h
 (https://bitbucket.org/multicoreware/x265/src/b1af4c36f48a4500a4912373ebcda9a5540b5c15/source/encoder/api.cpp?at=default
 line 332). The API docs claim that we should call x265_cleanup() to clean
 up such data, but h is still lost. This is a x265 bug: it should not leak
 the local variable h, instead it should dlclose() it in x265_cleanup.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4819#comment:8>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list