[x264-devel] x264 memory leaks error at __interceptor_malloc
丁zhengzheng
xiaozheng.ding399 at gmail.com
Tue Jan 14 01:40:43 UTC 2025
Thanks for confirming the memory leak issue in x264_param_strdup.
I understand this might not be a critical issue in typical usage scenarios.
However, I'm following up to ask if there are any plans to fix this memory
leak in future releases? The fix would be valuable for scenarios like:
- Long-running encoding services
- Systems with frequent encoder initialization/destruction
- Resource-constrained environments
Do you have any plans to fix this issue in a future release?
by 0x20z
Dimitry Andric <dimitry at andric.com> 于2025年1月11日周六 01:16写道:
> FWIW:
>
> ==317551== 166 (136 direct, 30 indirect) bytes in 1 blocks are definitely
> lost in loss record 230 of 246
> ==317551== at 0x67C1828: malloc (in
> /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==317551== by 0x2A24731: x264_param_strdup (base.c:220)
> ==317551== by 0x2A339F6: x264_8_encoder_open (encoder.c:1525)
> ==317551== by 0x2A29F10: x264_encoder_open_164 (api.c:96)
> ==317551== by 0xDE2A5B: X264_init (libx264.c:1414)
> ==317551== by 0xA838D5: avcodec_open2 (avcodec.c:327)
> ==317551== by 0x2DB7A0: enc_open (ffmpeg_enc.c:322)
> ==317551== by 0x2FF3DE: enc_open (ffmpeg_sched.c:1666)
> ==317551== by 0x2FF8AD: send_to_enc (ffmpeg_sched.c:1786)
> ==317551== by 0x3018F8: sch_filter_send (ffmpeg_sched.c:2452)
> ==317551== by 0x2E53FC: fg_output_frame (ffmpeg_filter.c:2458)
> ==317551== by 0x2E59D2: fg_output_step (ffmpeg_filter.c:2559)
>
> It looks like the parameters that are strdup()'d from
> https://code.videolan.org/videolan/x264/-/blob/master/encoder/encoder.c?ref_type=heads#L1520 onwards
> never get freed?
>
> For example, when debugging ffmpeg I can see it
> strdup'ing h->param.rc.psz_stat_out, but there does not seem to be any code
> that ever frees the psz_stat_out field.
>
> -Dimitry
>
> On 10 Jan 2025, at 08:19, 丁zhengzheng <xiaozheng.ding399 at gmail.com> wrote:
>
> Summary of the bug:
>
> Hello, dear developers:,
>
> I encountered a memory leak issue #75
> <https://code.videolan.org/videolan/x264/-/issues/75> while using FFmpeg
> with version git master. When I execute configure, if --enable-libx264 and
> --enable-gpl are enabled, it will trigger a problem. If I don't enable
> these two options, there won't be any problem. I tried compiling the latest
> master branch x264 on my own instead of downloading it from Ubuntu, and I
> was able to reproduce the issue.
>
> The FFmpeg team confirmed that this issue is related to a memory leak in
> the x264 library, not FFmpeg itself. As suggested by the FFmpeg developers,
> I am reporting this issue to the x264 team.
>
> Please confirm, I have also contacted the developers of FFmpeg, and here
> is their response:
> by James, 10 days ago
> <https://trac.ffmpeg.org/timeline?from=2024-12-20T12%3A55%3A06Z&precision=second>
> Keywords: bugs removed
> Priority:
>
> important → *normal*
> Resolution:
>
> → *invalid*
> Status:
>
> new → *closed*
>
> This looks like a memleak in libx264, not ffmpeg. x264_encoder_open()
> fails and apparently doesn't do a proper clean up. You should report it to
> them.
> How to reproduce:
>
> $unzip FFmpeg-master.zip
> $cd FFmpeg-master-dev
> $./configure --enable-libx264 --enable-gpl --cc=clang --cxx=clang++
> --toolchain=clang-asan --enable-cross-compile
>
> $make -j 30
> $./ffmpeg -i poc test.mp4
>
> poc
> crash log:
>
> =================================================================
> ==1590113==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 136 byte(s) in 1 object(s) allocated from:
>
> #0 0x5e7e1e17e67e in interceptor_malloc
> (/home/swift/workstation/github/FFmpeg-master/ffmpeg+0x98067e) (BuildId:
> 2e3adc0cc0a1ce7cb06b6662338d6fd012a2a61b
> <https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=2e3adc0cc0a1ce7cb06b6662338d6fd012a2a61b>
> )
> #1 <https://trac.ffmpeg.org/ticket/1> 0x731353c0c3d1
> (/usr/lib/x86_64-linux-gnu/libx264.so.163+0xc3d1) (BuildId:
> b2e7160a74448d05d96f3305d73fc2316edbedaf
> <https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=b2e7160a74448d05d96f3305d73fc2316edbedaf>
> )
>
> Indirect leak of 30 byte(s) in 2 object(s) allocated from:
>
> #0 0x5e7e1e169083 in interceptor_strdup
> (/home/swift/workstation/github/FFmpeg-master/ffmpeg+0x96b083) (BuildId:
> 2e3adc0cc0a1ce7cb06b6662338d6fd012a2a61b
> <https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=2e3adc0cc0a1ce7cb06b6662338d6fd012a2a61b>
> )
> #1 <https://trac.ffmpeg.org/ticket/1> 0x731353c0c353
> (/usr/lib/x86_64-linux-gnu/libx264.so.163+0xc353) (BuildId:
> b2e7160a74448d05d96f3305d73fc2316edbedaf
> <https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=b2e7160a74448d05d96f3305d73fc2316edbedaf>
> )
>
> SUMMARY: AddressSanitizer: 166 byte(s) leaked in 3 allocation(s).
> ffmpeg version
>
> ffmpeg version 7.1.git Copyright (c) 2000-2024 the FFmpeg developers
> built with Ubuntu clang version 14.0.0-1ubuntu1.1
> configuration: --enable-libx264 --cc=clang --cxx=clang++ --enable-gpl
> --toolchain=clang-asan
> libavutil 59. 51.100 / 59. 51.100
> libavcodec 61. 27.101 / 61. 27.101
> libavformat 61. 9.101 / 61. 9.101
> libavdevice 61. 4.100 / 61. 4.100
> libavfilter 10. 6.101 / 10. 6.101
> libswscale 8. 12.100 / 8. 12.100
> libswresample 5. 4.100 / 5. 4.100
> libpostproc 58. 4.100 / 58. 4.100
> ubuntu version
>
> $ lsb_release -a
> No LSB modules are available.
> Distributor ID: Ubuntu
> Description: Ubuntu 22.04.3 LTS
> Release: 22.04
> Codename: jammy
> $ uname -r
> 6.8.0-49-generic
> libx264 version
>
> $ dpkg -s libx264-dev
> Package: libx264-dev
> Status: install ok installed
> Priority: optional
> Section: libdevel
> Installed-Size: 2761
> Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
> Architecture: amd64
> Multi-Arch: same
> Source: x264
> Version: 2:0.163.3060+git5db6aa6-2build1
> Depends: libx264-163 (= 2:0.163.3060+git5db6aa6-2build1)
> Description: development files for libx264
>
> libx264 is an advanced encoding library for creating H.264 (MPEG-4 AVC)
> video streams.
> .
> This package contains the static library and headers used to build programs
> that use libx264.
>
> Original-Maintainer: Debian Multimedia Maintainers <
> debian-multimedia at lists.debian.org>
> Homepage: https://www.videolan.org/developers/x264.html
>
> Thanks!
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> https://mailman.videolan.org/listinfo/x264-devel
>
>
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> https://mailman.videolan.org/listinfo/x264-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x264-devel/attachments/20250114/cf9edf6a/attachment.htm>
More information about the x264-devel
mailing list