[FFmpeg-trac] #4416(avcodec:new): H264 regression: Crash on slice multithreading with 2.6.1
FFmpeg
trac at avcodec.org
Wed Apr 1 01:47:12 CEST 2015
#4416: H264 regression: Crash on slice multithreading with 2.6.1
-------------------------------------+-------------------------------------
Reporter: cehoyos | Owner:
Type: defect | Status: new
Priority: important | Component: avcodec
Version: 2.6.1 | Keywords: h264 crash
Blocked By: | SIGSEGV regression
Reproduced by developer: 0 | Blocking:
| Analyzed by developer: 0
-------------------------------------+-------------------------------------
The sample from ticket #4415 crashes 2.6.1 (and 2.6) when using slice
multi-threading, this is a regression since 6fafc62b
{{{
(gdb) r -cpuflags 0 -thread_type slice -threads 2 -i Record1MDVideoX.h264
-f null -
Starting program: ffmpeg_g -cpuflags 0 -thread_type slice -threads 2 -i
Record1MDVideoX.h264 -f null -
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
ffmpeg version n2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, h264, from 'Record1MDVideoX.h264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p, 1280x720 [SAR 1:1 DAR 16:9],
30 fps, 30 tbr, 1200k tbn, 60 tbc
[New Thread 0x7ffff14f0700 (LWP 2778)]
[New Thread 0x7ffff0cef700 (LWP 2780)]
[New Thread 0x7ffff04ee700 (LWP 2781)]
[New Thread 0x7fffefced700 (LWP 2782)]
[New Thread 0x7fffef4ec700 (LWP 2783)]
[New Thread 0x7fffeeceb700 (LWP 2784)]
[New Thread 0x7fffee4ea700 (LWP 2785)]
[New Thread 0x7fffedce9700 (LWP 2786)]
[New Thread 0x7fffed4e8700 (LWP 2787)]
[New Thread 0x7fffecce7700 (LWP 2788)]
[New Thread 0x7fffec4e6700 (LWP 2789)]
Output #0, null, to 'pipe:':
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720
[SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 30 fps, 30 tbn, 30 tbc
Metadata:
encoder : Lavc56.26.100 rawvideo
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
[null @ 0x1af9880] Encoder did not produce proper pts, making some up.
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] top block unavailable for requested intra4x4 mode -1 at
76 0
[h264 @ 0x1b97040] error while decoding MB 76 0, bytestream 3672
[h264 @ 0x1b97040] concealing 3573 DC, 3573 AC, 3573 MV errors in P frame
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] top block unavailable for requested intra4x4 mode -1 at
51 0
[h264 @ 0x1b97040] error while decoding MB 51 0, bytestream 4298
[h264 @ 0x1b97040] concealing 3598 DC, 3598 AC, 3598 MV errors in P frame
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] concealing 3571 DC, 3571 AC, 3571 MV errors in P frame
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
[h264 @ 0x1b97040] SPS changed in the middle of the frame
[h264 @ 0x1b97040] decode_slice_header error
Program received signal SIGSEGV, Segmentation fault.
put_h264_qpel16_mc00_8_c (dst=0x2500ec0 "", src=0x0, stride=1280)
at libavcodec/h264qpel_template.c:544
544 H264_MC(put_, 16)
(gdb) bt
#0 put_h264_qpel16_mc00_8_c (dst=0x2500ec0 "", src=0x0, stride=1280)
at libavcodec/h264qpel_template.c:544
#1 0x0000000000747bff in mc_dir_part (chroma_idc=1, pixel_shift=0,
chroma_op=0x776df0 <put_h264_chroma_mc8_8_c>, qpix_op=0x1beced0,
src_y_offset=0,
src_x_offset=0, dest_cr=0x26213e0 "", dest_cb=0x25e7920 "",
dest_y=0x2500ec0 "", list=0,
delta=0, height=16, square=1, n=0, pic=0x1c20180, h=0x1becd60)
at libavcodec/h264_mb.c:246
#2 mc_part_std (chroma_idc=1, pixel_shift=0, list1=0, list0=4096,
chroma_avg=0x777850 <avg_h264_chroma_mc8_8_c>, qpix_avg=0x1bed0d0,
chroma_put=0x776df0 <put_h264_chroma_mc8_8_c>, qpix_put=0x1beced0,
y_offset=0,
x_offset=0, dest_cr=0x26213e0 "", dest_cb=0x25e7920 "",
dest_y=0x2500ec0 "", delta=0,
height=16, square=1, n=0, h=0x1becd60) at libavcodec/h264_mb.c:349
#3 mc_part_420_simple_8 (h=0x1becd60, n=0, square=1, height=16, delta=0,
dest_y=<optimized out>, dest_cb=0x25e7920 "", dest_cr=0x26213e0 "",
x_offset=0,
y_offset=0, qpix_put=0x1beced0, chroma_put=0x776df0
<put_h264_chroma_mc8_8_c>,
qpix_avg=0x1bed0d0, chroma_avg=0x777850 <avg_h264_chroma_mc8_8_c>,
weight_op=0x1becd80,
weight_avg=0x1becda0, list0=4096, list1=0) at
libavcodec/h264_mc_template.c:58
#4 0x00000000007627c8 in hl_motion_420_simple_8 (weight_avg=<optimized
out>,
weight_op=<optimized out>, chroma_avg=<optimized out>,
qpix_avg=<optimized out>,
chroma_put=<optimized out>, qpix_put=<optimized out>,
dest_cr=<optimized out>,
dest_cb=<optimized out>, dest_y=<optimized out>, h=<optimized out>)
at libavcodec/h264_mc_template.c:82
#5 hl_decode_mb_simple_8 (h=h at entry=0x1becd60) at
libavcodec/h264_mb_template.c:182
#6 0x000000000076372a in ff_h264_hl_decode_mb (h=h at entry=0x1becd60)
at libavcodec/h264_mb.c:826
#7 0x00000000007717e9 in decode_slice (avctx=<optimized out>,
arg=arg at entry=0x7fffffffd2d8)
at libavcodec/h264_slice.c:2432
#8 0x000000000077686a in ff_h264_execute_decode_slices
(h=h at entry=0x1becd60,
context_count=context_count at entry=1) at libavcodec/h264_slice.c:2582
#9 0x00000000007387bc in decode_nal_units (h=h at entry=0x1becd60,
buf=buf at entry=0x1bb7b10 "",
buf_size=buf_size at entry=14735,
parse_extradata=parse_extradata at entry=0)
at libavcodec/h264.c:1689
#10 0x00000000007398d1 in h264_decode_frame (avctx=0x1b97040,
data=0x1afad80,
got_frame=0x7fffffffd75c, avpkt=<optimized out>) at
libavcodec/h264.c:1826
#11 0x0000000000b00528 in avcodec_decode_video2 (avctx=0x1b97040,
picture=picture at entry=0x1afad80,
got_picture_ptr=got_picture_ptr at entry=0x7fffffffd75c,
avpkt=avpkt at entry=0x7fffffffd9e0) at libavcodec/utils.c:2372
#12 0x0000000000484cfd in decode_video (ist=ist at entry=0x1ba6fe0,
pkt=pkt at entry=0x7fffffffd9e0,
got_output=got_output at entry=0x7fffffffd75c)
at ffmpeg.c:1960
#13 0x0000000000488dcc in process_input_packet (pkt=0x7fffffffd980,
ist=0x1ba6fe0)
at ffmpeg.c:2208
#14 process_input (file_index=28281760) at ffmpeg.c:3708
#15 0x000000000046f5e0 in transcode_step () at ffmpeg.c:3802
#16 transcode () at ffmpeg.c:3854
#17 main (argc=<optimized out>, argv=<optimized out>) at ffmpeg.c:4032
(gdb) disass $pc,$pc+32
Dump of assembler code from 0x8046f0 to 0x804710:
=> 0x00000000008046f0 <put_h264_qpel16_mc00_8_c+0>: mov (%rsi),%eax
0x00000000008046f2 <put_h264_qpel16_mc00_8_c+2>: lea
(%rsi,%rdx,1),%rcx
0x00000000008046f6 <put_h264_qpel16_mc00_8_c+6>: mov %eax,(%rdi)
0x00000000008046f8 <put_h264_qpel16_mc00_8_c+8>: mov
0x4(%rsi),%eax
0x00000000008046fb <put_h264_qpel16_mc00_8_c+11>: mov
%eax,0x4(%rdi)
0x00000000008046fe <put_h264_qpel16_mc00_8_c+14>: mov (%rcx),%r8d
0x0000000000804701 <put_h264_qpel16_mc00_8_c+17>: lea
(%rdi,%rdx,1),%rax
0x0000000000804705 <put_h264_qpel16_mc00_8_c+21>: mov %r8d,(%rax)
0x0000000000804708 <put_h264_qpel16_mc00_8_c+24>: mov
0x4(%rcx),%r8d
0x000000000080470c <put_h264_qpel16_mc00_8_c+28>: add %rdx,%rcx
0x000000000080470f <put_h264_qpel16_mc00_8_c+31>: mov
%r8d,0x4(%rax)
End of assembler dump.
(gdb) info register
rax 0x0 0
rbx 0x1becd60 29281632
rcx 0x1beced0 29282000
rdx 0x500 1280
rsi 0x0 0
rdi 0x2500ec0 38801088
rbp 0x0 0x0
rsp 0x7fffffffd018 0x7fffffffd018
r8 0x0 0
r9 0x0 0
r10 0x1beced0 29282000
r11 0x0 0
r12 0x0 0
r13 0x1c20180 29491584
r14 0x0 0
r15 0x2d0 720
rip 0x8046f0 0x8046f0 <put_h264_qpel16_mc00_8_c>
eflags 0x10287 [ CF PF SF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4416>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list