Ticket #1900 (open defect)

Opened 7 months ago

Last modified 3 months ago

h264: memleak with threads > 1

Reported by: ami_stuff Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: h264 leak
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

 http://www.datafilehost.com/download-d3ea3b83.html

C:\>ffmpeg -i h264.avi
ffmpeg version N-46283-g1475815 Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov  2 2012 02:31:20 with gcc 4.5.0 (GCC) 20100414 (Fedora MinGW 4.5.
0-1.fc14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-w32threads --enable-memalign-hack --enable-runtime-cpudetect
--enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -
lwinmm -lpthread' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snap
shots/build/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/s
napshots/build/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3
--enable-nonfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-
libvorbis --enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx
  libavutil      52.  1.100 / 52.  1.100
  libavcodec     54. 70.100 / 54. 70.100
  libavformat    54. 35.100 / 54. 35.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 21.106 /  3. 21.106
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[h264 @ 0x1edcac0] missing picture in access unit with size 1941
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 2377
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 2090
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 2305
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 3280
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 2963
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 2624
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] illegal log2_max_frame_num 50
[h264 @ 0x1edcac0] missing picture in access unit with size 2937
[h264 @ 0x1edcac0] illegal log2_max_frame_num 50
    Last message repeated 1 times
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] missing picture in access unit with size 4221
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 3 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 4270
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 3875
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] slice type too large (2) at 0 0
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 4394
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 4743
[h264 @ 0x1edcac0] Partitioned H.264 support is incomplete
[h264 @ 0x1edcac0] missing picture in access unit with size 5338
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 6106
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] sps_id (32) out of range
[h264 @ 0x1edcac0] missing picture in access unit with size 5938
[h264 @ 0x1edcac0] sps_id (32) out of range
    Last message repeated 1 times
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 5345
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 1 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] too many reference frames
    Last message repeated 1 times
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 5498
[h264 @ 0x1edcac0] Partitioned H.264 support is incomplete
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 10 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] Partitioned H.264 support is incomplete
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] missing picture in access unit with size 5630
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 5714
[h264 @ 0x1edcac0] non-existing PPS 2 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] sps_id out of range
    Last message repeated 1 times
[h264 @ 0x1edcac0] missing picture in access unit with size 5525
[h264 @ 0x1edcac0] sps_id out of range
    Last message repeated 1 times
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] slice type too large (2) at 0 0
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] missing picture in access unit with size 5623
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] FMO not supported
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] FMO not supported
[h264 @ 0x1edcac0] non-existing PPS 227 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] get_buffer() failed (-12 0 0)
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] sps_id out of range
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] illegal POC type 7
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] illegal POC type 7
    Last message repeated 1 times
[h264 @ 0x1edcac0] slice type too large (3) at 0 0
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 3 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 6 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 13 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 10 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] Partitioned H.264 support is incomplete
[h264 @ 0x1edcac0] missing picture in access unit with size 5668
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] sps_id (32) out of range
[h264 @ 0x1edcac0] missing picture in access unit with size 5753
[h264 @ 0x1edcac0] sps_id (32) out of range
    Last message repeated 1 times
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 5903
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 6 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] non-existing PPS referenced
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] non-existing PPS 0 referenced
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] missing picture in access unit with size 5680
[h264 @ 0x1edcac0] no frame!
[h264 @ 0x1edcac0] get_buffer() failed (-12 0 0)
[h264 @ 0x1edcac0] decode_slice_header error
[h264 @ 0x1edcac0] no frame!
Input #0, avi, from 'h264.avi':
  Duration: 00:00:12.64, start: 0.000000, bitrate: 788 kb/s
    Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 19968x3808, 12.33 fps
, 23.98 tbr, 23.97 tbn, 47.94 tbc
At least one output file must be specified

if I block mem request from ffmpeg I get crash

(gdb) r -i h264.avi
Starting program: d:\mingw\msys\1.0\ffmpeg-head-4f92d31\ffmpeg_g.exe -i h264.avi

[New Thread 200.0x70c]
ffmpeg version 0.11.1.git-4f92d31 Copyright (c) 2000-2012 the FFmpeg developers
  built on Aug 28 2012 14:56:41 with gcc 4.6.1 (GCC)
  configuration: --disable-ffprobe --disable-ffplay --enable-gpl
  libavutil      51. 70.100 / 51. 70.100
  libavcodec     54. 54.100 / 54. 54.100
  libavformat    54. 25.104 / 54. 25.104
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 13.101 /  3. 13.101
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[h264 @ 04490920] missing picture in access unit with size 1941
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 2377
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 2090
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 2305
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 3280
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 2963
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 2624
[h264 @ 04490920] no frame!
[h264 @ 04490920] illegal log2_max_frame_num 50
[h264 @ 04490920] missing picture in access unit with size 2937
[h264 @ 04490920] illegal log2_max_frame_num 50
    Last message repeated 1 times
[h264 @ 04490920] no frame!
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] missing picture in access unit with size 4221
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 3 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 4270
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 3875
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] slice type too large (2) at 0 0
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 4394
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 4743
[h264 @ 04490920] Partitioned H.264 support is incomplete
[h264 @ 04490920] missing picture in access unit with size 5338
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 6106
[h264 @ 04490920] no frame!
[h264 @ 04490920] sps_id (32) out of range
[h264 @ 04490920] missing picture in access unit with size 5938
[h264 @ 04490920] sps_id (32) out of range
    Last message repeated 1 times
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 5345
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 1 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] too many reference frames
    Last message repeated 1 times
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 5498
[h264 @ 04490920] Partitioned H.264 support is incomplete
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 10 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] Partitioned H.264 support is incomplete
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] missing picture in access unit with size 5630
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 5714
[h264 @ 04490920] non-existing PPS 2 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] sps_id out of range
    Last message repeated 1 times
[h264 @ 04490920] missing picture in access unit with size 5525
[h264 @ 04490920] sps_id out of range
    Last message repeated 1 times
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] slice type too large (2) at 0 0
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] missing picture in access unit with size 5623
[h264 @ 04490920] no frame!
[h264 @ 04490920] FMO not supported
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] FMO not supported
[h264 @ 04490920] non-existing PPS 227 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] no frame!
[h264 @ 04490920] non-existing PPS referenced
[h264 @ 04490920] non-existing PPS 0 referenced
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] get_buffer() failed (-12 0 00000000)
[h264 @ 04490920] decode_slice_header error
[h264 @ 04490920] sps_id out of range
[h264 @ 04490920] concealing 297024 DC, 297024 AC, 297024 MV errors in P frame

Program received signal SIGSEGV, Segmentation fault.
0x00b553a8 in guess_dc (s=0x44efe80, dc=0x4be13c4, w=2496, h=476,
    stride=2497, is_luma=1) at libavcodec/error_resilience.c:197
197                 col [b_x + b_y*stride][1]= color;
(gdb) bt
#0  0x00b553a8 in guess_dc (s=0x44efe80, dc=0x4be13c4, w=2496, h=476,
    stride=2497, is_luma=1) at libavcodec/error_resilience.c:197
#1  0x008ed659 in ff_er_frame_end (s=0x44efe80)
    at libavcodec/error_resilience.c:1249
#2  0x0064818c in field_end (h=0x44efe80, in_setup=<optimized out>)
    at libavcodec/h264.c:2283
#3  0x00664f26 in decode_frame (avctx=0x4490920, data=0x22f5e0,
    data_size=0x22f7d8, avpkt=0x22f558) at libavcodec/h264.c:4139
#4  0x0055848b in avcodec_decode_video2 (avctx=0x4490920, picture=0x22f5e0,
    got_picture_ptr=0x22f7d8, avpkt=0x22f770) at libavcodec/utils.c:1512
#5  0x0047bbf2 in try_decode_frame (st=0x43adb40, avpkt=<optimized out>,
    options=<optimized out>) at libavformat/utils.c:2377
#6  0x004839c0 in avformat_find_stream_info (ic=0x43ad4e0, options=0x43a2740)
    at libavformat/utils.c:2749
#7  0x004056d7 in opt_input_file (optctx=0x22fd68, opt=0x43a2924 "i",
    filename=<optimized out>) at ffmpeg_opt.c:770
#8  0x00415467 in parse_option (optctx=0x22fd68, opt=<optimized out>,
    arg=0x43a2926 "h264.avi", options=0xb8caa0) at cmdutils.c:320
#9  0x004156d6 in parse_options (optctx=0x22fd68, argc=3,
    argv=<optimized out>, options=0xb8caa0,
    parse_arg_function=0x40616c <opt_output_file>) at cmdutils.c:353
#10 0x00b1a042 in main (argc=3, argv=<optimized out>) at ffmpeg.c:3126
(gdb)

Attachments

h264.avi Download (1.2 MB) - added by cehoyos 7 months ago.
h264.avi.log Download (85.1 KB) - added by cehoyos 7 months ago.

Change History

Changed 7 months ago by cehoyos

comment:1 in reply to: ↑ description ; follow-up: ↓ 3 Changed 7 months ago by cehoyos

  • Keywords h264 leak added
  • Version changed from unspecified to git-master
  • Component changed from undetermined to avcodec

Replying to ami_stuff:

if I block mem request from ffmpeg I get crash

The crash was fixed in 16e52c86, the allocation is 4,779,403,502 bytes) and there are mem-leaks with rbsp_buffer.

comment:2 Changed 7 months ago by cehoyos

  • Status changed from new to open
  • Reproduced by developer set
  • Summary changed from h264: huge memory allocation to h264: huge memory allocation and a memleak

No leak with -threads 1, memory usage rises to ~5G here with -threads 16

$ valgrind --leak-check=full ./ffmpeg_g -threads 2 -i h264.avi -f null -
==11415== Memcheck, a memory error detector
==11415== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==11415== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==11415== Command: ./ffmpeg_g -threads 2 -i h264.avi -f null -
==11415==
ffmpeg version N-46528-g5ff43ec Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov  8 2012 19:27:34 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack
  libavutil      52.  5.100 / 52.  5.100
  libavcodec     54. 71.100 / 54. 71.100
  libavformat    54. 36.100 / 54. 36.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 21.106 /  3. 21.106
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[h264 @ 0x66ca000] missing picture in access unit with size 1941
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 2377
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 2090
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 2305
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 3280
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 2963
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] missing picture in access unit with size 2624
[h264 @ 0x66ca000] no frame!
[h264 @ 0x66ca000] illegal log2_max_frame_num 50
[h264 @ 0x66ca000] missing picture in access unit with size 2937
[h264 @ 0x66ca000] illegal log2_max_frame_num 50

...

[h264 @ 0x66ca000] deblocking filter parameters 52 106 out of range
[h264 @ 0x66ca000] decode_slice_header error
[h264 @ 0x66ca000] concealing 297024 DC, 297024 AC, 297024 MV errors in P frame
Input #0, avi, from 'h264.avi':
  Duration: 00:00:12.64, start: 0.000000, bitrate: 788 kb/s
    Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 19968x3808, 12.33 fps, 23.98 tbr, 23.97 tbn, 47.94 tbc
[h264 @ 0x6970d20] sps_id (32) out of range
    Last message repeated 1 times
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf54.36.100
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 19968x3808, q=2-31, 200 kb/s, 90k tbn, 23.98 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> rawvideo)
Press [q] to stop, [?] for help
[h264 @ 0x6970d20] no frame!
[h264 @ 0x6c160e0] no frame!
Error while decoding stream #0:0: Operation not permitted
[h264 @ 0x6970d20] no frame!

...

[h264 @ 0x6c160e0] decode_slice_header error
[h264 @ 0x6c160e0] no frame!
Error while decoding stream #0:0: Operation not permitted
[h264 @ 0x6970d20] Width/height/bit depth/chroma idc changing with threads is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a
feature which has not been implemented.
[h264 @ 0x6970d20] decode_slice_header error
[h264 @ 0x6970d20] no frame!
Error while decoding stream #0:0: Operation not permitted
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    ^M
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -nan%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
==11415==
==11415== HEAP SUMMARY:
==11415==     in use at exit: 7,813,977 bytes in 28 blocks
==11415==   total heap usage: 2,664 allocs, 2,636 frees, 2,495,641,669 bytes allocated
==11415==
==11415== 278,895 bytes in 1 blocks are definitely lost in loss record 1 of 2
==11415==    at 0x4C290FE: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11415==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11415==    by 0xBA6CC1: av_mallocz (mem.c:97)
==11415==    by 0x98344B: av_fast_padded_malloc (utils.c:82)
==11415==    by 0x76F6FD: ff_h264_decode_nal (h264.c:240)
==11415==    by 0x774B1D: decode_nal_units (h264.c:3797)
==11415==    by 0x775949: ff_h264_decode_extradata (h264.c:1056)
==11415==    by 0x41DDFD: ff_h264_decode_init (h264.c:1104)
==11415==    by 0x8DFD12: ff_thread_init (pthread.c:860)
==11415==    by 0x987DEB: avcodec_open2 (utils.c:965)
==11415==    by 0x461433: transcode_init (ffmpeg.c:1882)
==11415==    by 0x450299: main (ffmpeg.c:2947)
==11415==
==11415== 7,535,082 bytes in 27 blocks are definitely lost in loss record 2 of 2
==11415==    at 0x4C290FE: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11415==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11415==    by 0xBA6CC1: av_mallocz (mem.c:97)
==11415==    by 0x98344B: av_fast_padded_malloc (utils.c:82)
==11415==    by 0x76F6FD: ff_h264_decode_nal (h264.c:240)
==11415==    by 0x774B1D: decode_nal_units (h264.c:3797)
==11415==    by 0x775DA2: decode_frame (h264.c:4117)
==11415==    by 0x8DE245: frame_worker_thread (pthread.c:388)
==11415==    by 0x55C6E0D: start_thread (in /lib64/libpthread-2.15.so)
==11415==
==11415== LEAK SUMMARY:
==11415==    definitely lost: 7,813,977 bytes in 28 blocks
==11415==    indirectly lost: 0 bytes in 0 blocks
==11415==      possibly lost: 0 bytes in 0 blocks
==11415==    still reachable: 0 bytes in 0 blocks
==11415==         suppressed: 0 bytes in 0 blocks
==11415==
==11415== For counts of detected and suppressed errors, rerun with: -v
==11415== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 2 from 2)

Changed 7 months ago by cehoyos

comment:3 in reply to: ↑ 1 ; follow-up: ↓ 4 Changed 6 months ago by ami_stuff

Replying to cehoyos:

Replying to ami_stuff:

if I block mem request from ffmpeg I get crash

The crash was fixed in 16e52c86

Could you try to reproduce the crash again with this "ulimit" tool? It still crashes for me with this command line when I block mem request (git head):

ffmpeg -cpuflags 0 -i h264.avi

If it still doesn't crash for you I will compile new build soon to get a backtrace.

Version 1, edited 6 months ago by ami_stuff (previous) (next) (diff)

comment:4 in reply to: ↑ 3 Changed 6 months ago by cehoyos

Replying to ami_stuff:

Replying to cehoyos:

Replying to ami_stuff:

if I block mem request from ffmpeg I get crash

The crash was fixed in 16e52c86

Could you try to reproduce the crash again with this "ulimit" tool? It still crashes for me

Which version crashes for you / could you provide a backtrace?

comment:5 Changed 6 months ago by ami_stuff

these two, but they are not mine, so no debug symbols

C:\>ffmpeg1
ffmpeg version N-46726-g2f74f8d Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 13 2012 19:29:51 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runt
ime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass -
-enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enab
le-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-libo
pus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheo
ra --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li
bvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --ena
ble-zlib
  libavutil      52.  6.100 / 52.  6.100
  libavcodec     54. 71.100 / 54. 71.100
  libavformat    54. 36.100 / 54. 36.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.100 /  3. 23.100
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfi
le}...

Use -h to get full help or, even better, run 'man ffmpeg'
C:\>ffmpeg2
ffmpeg version N-46755-ge70144c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 15 2012 02:38:20 with gcc 4.5.0 (GCC) 20100414 (Fedora MinGW 4.5.
0-1.fc14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-w32threads --enable-memalign-hack --enable-runtime-cpudetect
--enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -
lwinmm -lpthread' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snap
shots/build/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/s
napshots/build/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3
--enable-nonfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-
libvorbis --enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx
  libavutil      52.  6.100 / 52.  6.100
  libavcodec     54. 71.100 / 54. 71.100
  libavformat    54. 36.100 / 54. 36.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.100 /  3. 23.100
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfi
le}...

Use -h to get full help or, even better, run 'man ffmpeg'
(gdb) r -cpuflags 0 -i h264.avi
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: d:\mingw\msys\1.0\ffmpeg-head-b2b67fd\ffmpeg2.exe -cpuflags 0
-i h264.avi
[New Thread 5140.0x17a8]
ffmpeg version N-46755-ge70144c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 15 2012 02:38:20 with gcc 4.5.0 (GCC) 20100414 (Fedora MinGW 4.5.
0-1.fc14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-w32threads --enable-memalign-hack --enable-runtime-cpudetect
--enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -
lwinmm -lpthread' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snap
shots/build/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/s
napshots/build/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3
--enable-nonfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-
libvorbis --enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx
  libavutil      52.  6.100 / 52.  6.100
  libavcodec     54. 71.100 / 54. 71.100
  libavformat    54. 36.100 / 54. 36.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.100 /  3. 23.100
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[h264 @ 0x1edce80] missing picture in access unit with size 1941
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 2377
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 2090
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 2305
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 3280
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 2963
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 2624
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] illegal log2_max_frame_num 50
[h264 @ 0x1edce80] missing picture in access unit with size 2937
[h264 @ 0x1edce80] illegal log2_max_frame_num 50
    Last message repeated 1 times
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] missing picture in access unit with size 4221
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 3 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 4270
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 3875
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] slice type too large (2) at 0 0
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 4394
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 4743
[h264 @ 0x1edce80] Partitioned H.264 support is incomplete
[h264 @ 0x1edce80] missing picture in access unit with size 5338
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 6106
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] sps_id (32) out of range
[h264 @ 0x1edce80] missing picture in access unit with size 5938
[h264 @ 0x1edce80] sps_id (32) out of range
    Last message repeated 1 times
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 5345
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 1 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] too many reference frames
    Last message repeated 1 times
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 5498
[h264 @ 0x1edce80] Partitioned H.264 support is incomplete
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 10 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] Partitioned H.264 support is incomplete
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] missing picture in access unit with size 5630
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 5714
[h264 @ 0x1edce80] non-existing PPS 2 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] sps_id out of range
    Last message repeated 1 times
[h264 @ 0x1edce80] missing picture in access unit with size 5525
[h264 @ 0x1edce80] sps_id out of range
    Last message repeated 1 times
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] slice type too large (2) at 0 0
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] missing picture in access unit with size 5623
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] FMO not supported
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] FMO not supported
[h264 @ 0x1edce80] non-existing PPS 227 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] Cannot allocate memory.
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] sps_id out of range
[h264 @ 0x1edce80] concealing 297024 DC, 297024 AC, 297024 MV errors in P frame
[h264 @ 0x1edce80] guess_dc() is out of memory
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] illegal POC type 7
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] illegal POC type 7
    Last message repeated 1 times
[h264 @ 0x1edce80] slice type too large (3) at 0 0
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 3 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 6 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 13 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 10 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] Partitioned H.264 support is incomplete
[h264 @ 0x1edce80] missing picture in access unit with size 5668
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] sps_id (32) out of range
[h264 @ 0x1edce80] missing picture in access unit with size 5753
[h264 @ 0x1edce80] sps_id (32) out of range
    Last message repeated 1 times
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 5903
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 6 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] non-existing PPS referenced
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] non-existing PPS 0 referenced
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] missing picture in access unit with size 5680
[h264 @ 0x1edce80] no frame!
[h264 @ 0x1edce80] Missing reference picture, default is 2
    Last message repeated 1 times
[h264 @ 0x1edce80] deblocking filter parameters 52 106 out of range
[h264 @ 0x1edce80] decode_slice_header error
[h264 @ 0x1edce80] Warning MVs not available
[h264 @ 0x1edce80] concealing 297024 DC, 297024 AC, 297024 MV errors in P frame

Program received signal SIGSEGV, Segmentation fault.
0x0090a710 in ?? ()

comment:6 Changed 6 months ago by cehoyos

I get the following with "ulimit -Sv 1200000", not reproducible with -threads 1:

$ valgrind ffmpeg_g -i h264.avi -f null -

[...]

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
==26146== Invalid free() / delete / delete[] / realloc()
==26146==    at 0x4C29D4E: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==26146==    by 0xBAB4EB: av_freep (mem.c:190)
==26146==    by 0x8962CA: ff_MPV_common_end (mpegvideo.c:471)
==26146==    by 0x41EA4D: h264_decode_end (h264.c:4176)
==26146==    by 0x8E2754: frame_thread_free (pthread.c:771)
==26146==    by 0x4348B1: avcodec_close (utils.c:1963)
==26146==    by 0x453939: main (ffmpeg.c:3025)
==26146==  Address 0x3ade9080 is not stack'd, malloc'd or (recently) free'd
==26146==
==26146== Invalid free() / delete / delete[] / realloc()
==26146==    at 0x4C29D4E: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==26146==    by 0xBAB4EB: av_freep (mem.c:190)
==26146==    by 0x8962D6: ff_MPV_common_end (mpegvideo.c:472)
==26146==    by 0x41EA4D: h264_decode_end (h264.c:4176)
==26146==    by 0x8E2754: frame_thread_free (pthread.c:771)
==26146==    by 0x4348B1: avcodec_close (utils.c:1963)
==26146==    by 0x453939: main (ffmpeg.c:3025)
==26146==  Address 0x3b1e9080 is 0 bytes inside a block of size 297,262 free'd
==26146==    at 0x4C29D4E: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==26146==    by 0xBAB4EB: av_freep (mem.c:190)
==26146==    by 0x8962D6: ff_MPV_common_end (mpegvideo.c:472)
==26146==    by 0x4282F6: ff_MPV_common_init (mpegvideo.c:914)
==26146==    by 0x896C13: ff_mpeg_update_thread_context (mpegvideo.c:551)
==26146==    by 0x772A99: decode_update_thread_context (h264.c:1179)
==26146==    by 0x8E2D1C: ff_thread_decode_frame (pthread.c:458)
==26146==    by 0x98ABD3: avcodec_decode_video2 (utils.c:1663)
==26146==    by 0x45FCB4: decode_video (ffmpeg.c:1563)
==26146==    by 0x453EEC: main (ffmpeg.c:1764)
==26146==
==26146== Invalid free() / delete / delete[] / realloc()
==26146==    at 0x4C29D4E: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==26146==    by 0xBAB4EB: av_freep (mem.c:190)
==26146==    by 0x896332: ff_MPV_common_end (mpegvideo.c:481)
==26146==    by 0x41EA4D: h264_decode_end (h264.c:4176)
==26146==    by 0x8E2754: frame_thread_free (pthread.c:771)
==26146==    by 0x4348B1: avcodec_close (utils.c:1963)
==26146==    by 0x453939: main (ffmpeg.c:3025)
==26146==  Address 0x22e1c8e0 is 0 bytes inside a block of size 2,520 free'd
==26146==    at 0x4C29D4E: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==26146==    by 0xBAB4EB: av_freep (mem.c:190)
==26146==    by 0x896332: ff_MPV_common_end (mpegvideo.c:481)
==26146==    by 0x4282F6: ff_MPV_common_init (mpegvideo.c:914)
==26146==    by 0x896C13: ff_mpeg_update_thread_context (mpegvideo.c:551)
==26146==    by 0x772A99: decode_update_thread_context (h264.c:1179)
==26146==    by 0x8E2D1C: ff_thread_decode_frame (pthread.c:458)
==26146==    by 0x98ABD3: avcodec_decode_video2 (utils.c:1663)
==26146==    by 0x45FCB4: decode_video (ffmpeg.c:1563)
==26146==    by 0x453EEC: main (ffmpeg.c:1764)
==26146==
==26146==
==26146== HEAP SUMMARY:
==26146==     in use at exit: 7,535,176 bytes in 27 blocks
==26146==   total heap usage: 4,035 allocs, 5,053 frees, 2,003,924,921 bytes allocated
==26146==
==26146== LEAK SUMMARY:
==26146==    definitely lost: 7,256,557 bytes in 26 blocks
==26146==    indirectly lost: 0 bytes in 0 blocks
==26146==      possibly lost: 278,619 bytes in 1 blocks
==26146==    still reachable: 0 bytes in 0 blocks
==26146==         suppressed: 0 bytes in 0 blocks
==26146== Rerun with --leak-check=full to see details of leaked memory
==26146==
==26146== For counts of detected and suppressed errors, rerun with: -v
==26146== ERROR SUMMARY: 1311 errors from 13 contexts (suppressed: 2 from 2)

comment:7 Changed 6 months ago by cehoyos

  • Priority changed from normal to important
  • Summary changed from h264: huge memory allocation and a memleak to h264: huge memory allocation and a memleak, possible race condition

comment:8 Changed 5 months ago by cehoyos

  • Summary changed from h264: huge memory allocation and a memleak, possible race condition to h264: huge memory allocation and a memleak

I cannot reproduce the race condition anymore, valgrind still reports a 6M memleak and >3.5G memory allocation.

comment:9 Changed 5 months ago by cehoyos

No memory leak with -threads 1. (Memory allocation varies, the following run was stopped early.)

$ valgrind --leak-check=full ffmpeg_g -threads 2 -i h264.avi -f null -
==20435== Memcheck, a memory error detector
==20435== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==20435== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==20435== Command: ffmpeg_g -i h264.avi -f null -
==20435==
ffmpeg version N-48119-gf9d8658 Copyright (c) 2000-2012 the FFmpeg developers
  built on Dec 23 2012 11:31:11 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --disable-yasm --disable-asm --disable-optimizations
  libavutil      52. 12.100 / 52. 12.100
  libavcodec     54. 81.100 / 54. 81.100
  libavformat    54. 49.102 / 54. 49.102
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 29.101 /  3. 29.101
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100

[...]

==20435== HEAP SUMMARY:
==20435==     in use at exit: 7,813,977 bytes in 28 blocks
==20435==   total heap usage: 2,207 allocs, 2,179 frees, 1,948,151,926 bytes allocated
==20435==
==20435== 278,895 bytes in 1 blocks are definitely lost in loss record 1 of 2
==20435==    at 0x4C290FE: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20435==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20435==    by 0xC9E701: av_malloc (mem.c:92)
==20435==    by 0xC9E861: av_mallocz (mem.c:198)
==20435==    by 0xA3E900: ff_fast_malloc (utils.c:82)
==20435==    by 0xA3E9C3: av_fast_padded_malloc (utils.c:102)
==20435==    by 0x71B5F3: ff_h264_decode_nal (h264.c:240)
==20435==    by 0x777EDC: decode_nal_units (h264.c:3983)
==20435==    by 0x71D71B: ff_h264_decode_extradata (h264.c:1056)
==20435==    by 0x71D94E: ff_h264_decode_init (h264.c:1108)
==20435==    by 0x986FB4: frame_thread_init (pthread.c:860)
==20435==    by 0x98794F: ff_thread_init (pthread.c:1090)
==20435==
==20435== 7,535,082 bytes in 27 blocks are definitely lost in loss record 2 of 2
==20435==    at 0x4C290FE: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20435==    by 0x4C291A7: posix_memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==20435==    by 0xC9E701: av_malloc (mem.c:92)
==20435==    by 0xC9E861: av_mallocz (mem.c:198)
==20435==    by 0xA3E900: ff_fast_malloc (utils.c:82)
==20435==    by 0xA3E9C3: av_fast_padded_malloc (utils.c:102)
==20435==    by 0x71B5F3: ff_h264_decode_nal (h264.c:240)
==20435==    by 0x777EDC: decode_nal_units (h264.c:3983)
==20435==    by 0x779067: decode_frame (h264.c:4332)
==20435==    by 0x985A9C: frame_worker_thread (pthread.c:388)
==20435==    by 0x55C6E0D: start_thread (in /lib64/libpthread-2.15.so)
==20435==
==20435== LEAK SUMMARY:
==20435==    definitely lost: 7,813,977 bytes in 28 blocks
==20435==    indirectly lost: 0 bytes in 0 blocks
==20435==      possibly lost: 0 bytes in 0 blocks
==20435==    still reachable: 0 bytes in 0 blocks
==20435==         suppressed: 0 bytes in 0 blocks

comment:10 Changed 5 months ago by michael

huge memory allocations can be prevented by limiting through -max_alloc X.
While its possible in specific cases to more intelligently prevent huge allocations, this is not true in general, one can always encounter a file that stores a 8000x8000 yuv 4:4:4 16bit video that needs 16 frame buffers.

comment:11 Changed 5 months ago by cehoyos

  • Priority changed from important to normal

comment:12 Changed 3 months ago by cehoyos

Several identical allocations (the biggest) happen in av_image_alloc() for images with a resolution of 20000x4000, this could happen in valid streams, more such allocations happen if threads > 1.
The memleak with threads > 1 is still reproducible.

comment:13 Changed 3 months ago by cehoyos

  • Summary changed from h264: huge memory allocation and a memleak to h264: memleak with threads > 1
Note: See TracTickets for help on using tickets.