Opened 8 years ago
Closed 8 years ago
#6491 closed defect (fixed)
interlace filter crash
| Reported by: | alexpigment | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avfilter |
| Version: | git-master | Keywords: | crash SIGSEGV interlace regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug:
When using a real 1080p60 video source (i.e. not lavfi), attempting to both crop to 1440x1080 and then interlace causes FFMPEG to crash. The same video can be either cropped or interlaced individually with success. Also, doing the cropping and interlacing in two subsequent encodes works as expected. Interestingly, if I crop, scale to 720x480, then interlace in a single encode, this works as expected.
How to reproduce:
Use included sample (or perhaps another 1080p60 video) and then use the following command line:
% ffmpeg -i 1080p60sample.mp4 -vf crop=1440:1080,interlace=scan=tff -c:v libx264 -x264-params tff -flags +ilme+ildct -an output.mp4
ffmpeg version N-86537-gae6f6d4
built on 2017-06-20
Attachments (1)
Change History (5)
by , 8 years ago
| Attachment: | 1080p60sample.mp4 added |
|---|
comment:1 by , 8 years ago
| Component: | undetermined → avfilter |
|---|---|
| Keywords: | SIGSEGV added; ffmpeg 1080i 1440x1080 crop removed |
| Reproduced by developer: | set |
| Status: | new → open |
| Version: | unspecified → git-master |
I didn't test for regression.
(gdb) r -f lavfi -i testsrc=s=hd1080,format=yuv420p -vf crop=1440:1080,interlace -f null -
Starting program: ffmpeg_g -f lavfi -i testsrc=s=hd1080,format=yuv420p -vf crop=1440:1080,interlace -f null -
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
ffmpeg version N-86620-g3594788b71 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.1.1 (GCC) 20170621
configuration: --enable-gpl
libavutil 55. 66.100 / 55. 66.100
libavcodec 57. 99.102 / 57. 99.102
libavformat 57. 75.100 / 57. 75.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 94.100 / 6. 94.100
libswscale 4. 7.101 / 4. 7.101
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
[New Thread 0x7ffff3ec0700 (LWP 15562)]
[New Thread 0x7ffff36bf700 (LWP 15563)]
[New Thread 0x7ffff2ebe700 (LWP 15564)]
[New Thread 0x7ffff26bd700 (LWP 15565)]
[New Thread 0x7ffff1ebc700 (LWP 15566)]
[New Thread 0x7ffff16bb700 (LWP 15567)]
[New Thread 0x7ffff0eba700 (LWP 15568)]
[New Thread 0x7ffff06b9700 (LWP 15569)]
[New Thread 0x7fffefeb8700 (LWP 15570)]
Input #0, lavfi, from 'testsrc=s=hd1080,format=yuv420p':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[New Thread 0x7fffeebc5700 (LWP 15571)]
[New Thread 0x7fffee3c4700 (LWP 15572)]
[New Thread 0x7fffedbc3700 (LWP 15573)]
[New Thread 0x7fffed3c2700 (LWP 15574)]
[New Thread 0x7fffecbc1700 (LWP 15575)]
[New Thread 0x7fffec3c0700 (LWP 15576)]
[New Thread 0x7fffebbbf700 (LWP 15577)]
[New Thread 0x7fffeb3be700 (LWP 15578)]
[New Thread 0x7fffeabbd700 (LWP 15579)]
Output #0, null, to 'pipe:':
Metadata:
encoder : Lavf57.75.100
Stream #0:0: Video: wrapped_avframe, yuv420p, 1440x1080 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 12.50 fps, 12.50 tbn, 12.50 tbc
Metadata:
encoder : Lavc57.99.102 wrapped_avframe
Thread 1 "ffmpeg_g" received signal SIGSEGV, Segmentation fault.
0x00000000005f8b63 in ff_lowpass_line_sse2 ()
(gdb) bt
#0 0x00000000005f8b63 in ff_lowpass_line_sse2 ()
#1 0x0000000000533a50 in copy_picture_field (src_frame=0x2046960, dst_frame=dst_frame@entry=0x2045720,
inlink=inlink@entry=0x20443c0, field_type=field_type@entry=FIELD_UPPER, lowpass=1, s=<optimized out>)
at libavfilter/vf_interlace.c:193
#2 0x0000000000533bce in filter_frame (inlink=inlink@entry=0x20443c0, buf=<optimized out>) at libavfilter/vf_interlace.c:257
#3 0x00000000004bd60b in ff_filter_frame_framed (frame=<optimized out>, link=0x20443c0) at libavfilter/avfilter.c:1116
#4 ff_filter_frame_to_filter (link=0x20443c0) at libavfilter/avfilter.c:1264
#5 ff_filter_activate_default (filter=<optimized out>) at libavfilter/avfilter.c:1315
#6 ff_filter_activate (filter=<optimized out>) at libavfilter/avfilter.c:1476
#7 0x00000000004c0bdc in ff_filter_graph_run_once (graph=<optimized out>) at libavfilter/avfiltergraph.c:1449
#8 0x00000000004c1206 in get_frame_internal (samples=<optimized out>, flags=1, frame=<optimized out>, ctx=0x2045300)
at libavfilter/buffersink.c:110
#9 av_buffersink_get_frame_flags (ctx=0x2045300, frame=frame@entry=0x0, flags=flags@entry=1) at libavfilter/buffersink.c:121
#10 0x00000000004c0929 in avfilter_graph_request_oldest (graph=0x2043400) at libavfilter/avfiltergraph.c:1402
#11 0x000000000047e89b in transcode_from_filter (best_ist=<synthetic pointer>, graph=<optimized out>) at ffmpeg.c:4455
#12 transcode_step () at ffmpeg.c:4521
#13 transcode () at ffmpeg.c:4597
#14 main (argc=<optimized out>, argv=<optimized out>) at ffmpeg.c:4803
(gdb) disass $pc-32,$pc+32
Dump of assembler code from 0x5f8b43 to 0x5f8b83:
0x00000000005f8b43: nopl %cs:0x0(%rax,%rax,1)
0x00000000005f8b4c: nopl 0x0(%rax)
0x00000000005f8b50 <ff_lowpass_line_sse2+0>: add %rsi,%rdi
0x00000000005f8b53 <ff_lowpass_line_sse2+3>: add %rsi,%rdx
0x00000000005f8b56 <ff_lowpass_line_sse2+6>: add %rdx,%rcx
0x00000000005f8b59 <ff_lowpass_line_sse2+9>: add %rdx,%r8
0x00000000005f8b5c <ff_lowpass_line_sse2+12>: neg %rsi
0x00000000005f8b5f <ff_lowpass_line_sse2+15>: pcmpeqb %xmm6,%xmm6
=> 0x00000000005f8b63 <ff_lowpass_line_sse2+19>: movdqa (%rcx,%rsi,1),%xmm0
0x00000000005f8b68 <ff_lowpass_line_sse2+24>: movdqa 0x10(%rcx,%rsi,1),%xmm1
0x00000000005f8b6e <ff_lowpass_line_sse2+30>: pavgb (%r8,%rsi,1),%xmm0
0x00000000005f8b74 <ff_lowpass_line_sse2+36>: pavgb 0x10(%r8,%rsi,1),%xmm1
0x00000000005f8b7b <ff_lowpass_line_sse2+43>: pxor %xmm6,%xmm0
0x00000000005f8b7f <ff_lowpass_line_sse2+47>: pxor %xmm6,%xmm1
End of assembler dump.
(gdb) info all-registers
rax 0x2042260 33825376
rbx 0x10e 270
rcx 0x7fffeedc0758 140737200785240
rdx 0x7fffeedc0758 140737200785240
rsi 0xfffffffffffffd30 -720
rdi 0x7ffff7e65310 140737352454928
rbp 0x10e 0x10e
rsp 0x7fffffffdfd8 0x7fffffffdfd8
r8 0x7fffeedc0b18 140737200786200
r9 0x10e 270
r10 0x22 34
r11 0x246 582
r12 0x2d0 720
r13 0x7ffff7e65040 140737352454208
r14 0x2 2
r15 0x7fffeedc0488 140737200784520
rip 0x5f8b63 0x5f8b63 <ff_lowpass_line_sse2+19>
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
st0 0 (raw 0x00000000000000000000)
st1 0 (raw 0x00000000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x37f 895
fstat 0x0 0
ftag 0xffff 65535
fiseg 0x0 0
fioff 0x0 0
foseg 0x0 0
fooff 0x0 0
fop 0x0 0
xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xaa <repeats 16 times>}, v8_int16 = {
0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, v4_int32 = {0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
0xaaaaaaaa}, v2_int64 = {0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa}, uint128 = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xaa <repeats 16 times>}, v8_int16 = {
0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, v4_int32 = {0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa,
0xaaaaaaaa}, v2_int64 = {0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa}, uint128 = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
xmm2 {v4_float = {0x55500000, 0x55500000, 0x55500000, 0x55500000}, v2_double = {0x8000000000000000,
0x8000000000000000}, v16_int8 = {0x55 <repeats 16 times>}, v8_int16 = {0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
0x5555, 0x5555}, v4_int32 = {0x55555555, 0x55555555, 0x55555555, 0x55555555}, v2_int64 = {0x5555555555555555,
0x5555555555555555}, uint128 = 0x55555555555555555555555555555555}
xmm3 {v4_float = {0x55500000, 0x55500000, 0x55500000, 0x55500000}, v2_double = {0x8000000000000000,
0x8000000000000000}, v16_int8 = {0x55 <repeats 16 times>}, v8_int16 = {0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
---Type <return> to continue, or q <return> to quit---
0x5555, 0x5555}, v4_int32 = {0x55555555, 0x55555555, 0x55555555, 0x55555555}, v2_int64 = {0x5555555555555555,
0x5555555555555555}, uint128 = 0x55555555555555555555555555555555}
xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x80 <repeats 16 times>}, v8_int16 = {
0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080}, v4_int32 = {0x80808080, 0x80808080, 0x80808080,
0x80808080}, v2_int64 = {0x8080808080808080, 0x8080808080808080}, uint128 = 0x80808080808080808080808080808080}
xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x80 <repeats 16 times>}, v8_int16 = {
0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080}, v4_int32 = {0x80808080, 0x80808080, 0x80808080,
0x80808080}, v2_int64 = {0x8080808080808080, 0x8080808080808080}, uint128 = 0x80808080808080808080808080808080}
xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x8000000000000000, 0x8000000000000000}, v16_int8 = {
0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}, v4_int32 = {
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff}, v2_int64 = {0xffffffffffffffff, 0xffffffffffffffff},
uint128 = 0xffffffffffffffffffffffffffffffff}
xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
uint128 = 0x00000000000000000000000000000000}
xmm8 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x80 <repeats 16 times>}, v8_int16 = {
0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080}, v4_int32 = {0x80808080, 0x80808080, 0x80808080,
0x80808080}, v2_int64 = {0x8080808080808080, 0x8080808080808080}, uint128 = 0x80808080808080808080808080808080}
xmm9 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x88, 0xc, 0x0, 0x0, 0x87, 0x40, 0x88, 0xc,
0x88, 0xc, 0x0, 0x0, 0x87, 0x40, 0x88, 0xc}, v8_int16 = {0xc88, 0x0, 0x4087, 0xc88, 0xc88, 0x0, 0x4087, 0xc88}, v4_int32 = {
0xc88, 0xc884087, 0xc88, 0xc884087}, v2_int64 = {0xc88408700000c88, 0xc88408700000c88},
uint128 = 0x0c88408700000c880c88408700000c88}
xmm10 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x2, 0x80, 0x3, 0x80, 0x4, 0x80, 0x5, 0x80,
0x8, 0x80, 0x9, 0x80, 0xa, 0x80, 0xb, 0x80}, v8_int16 = {0x8002, 0x8003, 0x8004, 0x8005, 0x8008, 0x8009, 0x800a, 0x800b},
v4_int32 = {0x80038002, 0x80058004, 0x80098008, 0x800b800a}, v2_int64 = {0x8005800480038002, 0x800b800a80098008},
uint128 = 0x800b800a800980088005800480038002}
xmm11 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0}, v8_int16 = {0x0, 0xff00, 0x0, 0x0, 0xff00, 0x0, 0xff00, 0x0}, v4_int32 = {
0xff000000, 0x0, 0xff00, 0xff00}, v2_int64 = {0xff000000, 0xff000000ff00}, uint128 = 0x0000ff000000ff0000000000ff000000}
xmm12 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x66, 0x94, 0x48, 0xf, 0x11, 0x14, 0xe3,
0xb9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x9466, 0xf48, 0x1411, 0xb9e3, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {
0xf489466, 0xb9e31411, 0x0, 0x0}, v2_int64 = {0xb9e314110f489466, 0x0}, uint128 = 0x0000000000000000b9e314110f489466}
xmm13 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x40, 0xfe, 0xe8, 0x3a, 0x73, 0x76, 0x56,
0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xfe40, 0x3ae8, 0x7673, 0xbc56, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {
0x3ae8fe40, 0xbc567673, 0x0, 0x0}, v2_int64 = {0xbc5676733ae8fe40, 0x0}, uint128 = 0x0000000000000000bc5676733ae8fe40}
xmm14 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0,
0x80000000, 0x0, 0x0}, v2_int64 = {0x8000000000000000, 0x0}, uint128 = 0x00000000000000008000000000000000}
xmm15 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0,
0x80000000, 0x0, 0x0}, v2_int64 = {0x8000000000000000, 0x0}, uint128 = 0x00000000000000008000000000000000}
comment:2 by , 8 years ago
| Keywords: | regression added |
|---|---|
| Priority: | normal → important |
Can be considered a regression since 6f373d75 / 2e170405
comment:3 by , 8 years ago
| Summary: | FFMPEG crashes when trying to crop 1080p60 video to 1440x1080 and interlace → interlace filter crash |
|---|
comment:4 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Fixe in
49dced9fd0c8a8d2f3676533914fda7417435df2
and similar case (with low_pass_complex) in
3c6dc270355f27645cf931fae1ed2dc1405507f8



1080p60 video file