#594: Combination of transpose, scale, pad filters results in segfault --------------------------------+---------------------------------------- Reporter: ignat | Owner: Type: defect | Status: new Priority: normal | Component: undetermined Version: 0.8.5 | Resolution: Keywords: | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | --------------------------------+----------------------------------------
Comment (by ignat): Please find gdb output for statically linked ffmpeg below. Crash below was reproduced without transpose=3 filter. I will investigate if using external library (x264) is required to reproduce crash tomorrow. (gdb) r -v 9 -loglevel 99 -i rotate_x.mp4 -vcodec libx264 -r 20 -b 768k -bt 768k -vf scale=152:270,pad=480:270:164:0 -an -preset medium -fastfirstpass 1 -profile baseline -pass 1 -passlogfile result.mp4.passlogfile -f rawvideo -y /dev/null Starting program: /home/ignat/external_src/ffmpeg/ffmpeg_g -v 9 -loglevel 99 -i rotate_x.mp4 -vcodec libx264 -r 20 -b 768k -bt 768k -vf scale=152:270,pad=480:270:164:0 -an -preset medium -fastfirstpass 1 -profile baseline -pass 1 -passlogfile result.mp4.passlogfile -f rawvideo -y /dev/null [Thread debugging using libthread_db enabled] ..... Seems stream 1 codec frame rate differs from container frame rate: 60000.00 (60000/1) -> 29.83 (179/6) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'rotate_x.mp4': Metadata: major_brand : 3gp4 minor_version : 768 compatible_brands: 3gp43gp6 Duration: 00:00:01.17, start: 0.000000, bitrate: 11299 kb/s Stream #0:0(eng), 1, 1/16000: Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, s16, 27 kb/s Stream #0:1(eng), 27, 1/30000: Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 1/60000, 12667 kb/s, 28.85 fps, 29.83 tbr, 30k tbn, 60k tbc Please use -b:a or -b:v, -b is ambiguous [buffer @ 0x8dd9da0] w:1280 h:720 pixfmt:yuv420p tb:1/1000000 sar:0/1 sws_param: [scale @ 0x8dd3880] w:1280 h:720 fmt:yuv420p -> w:152 h:270 fmt:yuv420p flags:0x4 [pad @ 0x8dd3d60] w:152 h:270 -> w:480 h:270 x:164 y:0 color:0x108080FF[yuva] [libx264 @ 0x8dd2600] err{or,}_recognition separate: 1; 1 [libx264 @ 0x8dd2600] err{or,}_recognition combined: 1; 1 [libx264 @ 0x8dd2600] using mv_range_thread = 40 [libx264 @ 0x8dd2600] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 [New Thread 0xb77f7b70 (LWP 20488)] [New Thread 0xb6ff6b70 (LWP 20489)] [New Thread 0xb67f5b70 (LWP 20490)] [New Thread 0xb5adbb70 (LWP 20491)] [libx264 @ 0x8dd2600] profile Constrained Baseline, level 2.1 [h264 @ 0x8dd8e40] err{or,}_recognition separate: 1; 1 [h264 @ 0x8dd8e40] err{or,}_recognition combined: 1; 1 Output #0, rawvideo, to '/dev/null': Metadata: major_brand : 3gp4 minor_version : 768 compatible_brands: 3gp43gp6 encoder : Lavf53.17.0 Stream #0:0(eng), 0, 1/90000: Video: h264, yuv420p, 480x270, 1/20, q=-1--1, pass 1, 768 kb/s, 90k tbn, 20 tbc Stream mapping: Stream #0.1 -> #0.0 (h264 -> libx264) Press [q] to stop, [?] for help Program received signal SIGSEGV, Segmentation fault. 0x086d64c7 in yuv2yuvX_sse3 (filter=0x8de9538, filterSize=11, src=0x8dee890, dest=0x97f7e04 "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200"..., dstW=152, dither=0x88382d8 "@@@@@@@@", offset=0) at libswscale/x86/swscale_mmx.c:196 196 __asm__ volatile( (gdb) bt #0 0x086d64c7 in yuv2yuvX_sse3 (filter=0x8de9538, filterSize=11, src=0x8dee890, dest=0x97f7e04 "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200"..., dstW=152, dither=0x88382d8 "@@@@@@@@", offset=0) at libswscale/x86/swscale_mmx.c:196 #1 0x086c7bfc in swScale (c=0x8de7ba0, src=0xbfffc9b0, srcStride=0xbfffc980, srcSliceY=0, srcSliceH=720, dst=0xbfffc9a0, dstStride=0xbfffc990) at libswscale/swscale.c:2691 #2 0x086acb50 in sws_scale (c=0x8de7ba0, srcSlice=0xbfffca70, srcStride=0xbfffca50, srcSliceY=0, srcSliceH=720, dst=0xbfffca60, dstStride=0xbfffca40) at libswscale/swscale_unscaled.c:807 #3 0x080a62f6 in scale_slice (link=0x8dd3c60, y=0, h=720, slice_dir=1) at libavfilter/vf_scale.c:294 #4 draw_slice (link=0x8dd3c60, y=0, h=720, slice_dir=1) at libavfilter/vf_scale.c:311 #5 0x08094f9e in avfilter_draw_slice (link=0x8dd3c60, y=0, h=720, slice_dir=1) at libavfilter/avfilter.c:641 #6 0x080a97ff in request_frame (link=0x8dd3c60) at libavfilter/vsrc_buffer.c:191 #7 0x0809433f in avfilter_request_frame (link=0x8dd4380) at libavfilter/avfilter.c:520 #8 0x0809895b in av_buffersink_get_buffer_ref (ctx=0x8def180, bufref=0x8dd2b98, flags=0) at libavfilter/sink_buffer.c:128 #9 0x08080f1b in output_packet (ist=0x8dd9d40, ist_index=1, ost_table=0x8dd2a00, nb_ostreams=1, pkt=0xbfffd17c) at ffmpeg.c:1852 #10 0x080868f5 in transcode (output_files=0x8dd3420, nb_output_files=1, input_files=0x8dd98e0, nb_input_files=1) at ffmpeg.c:2635 #11 0x0808b22d in main (argc=<value optimized out>, argv=<value optimized out>) at ffmpeg.c:4486 (gdb) disass $pc-32,$pc+32 Dump of assembler code from 0x86d64a7 to 0x86d64e7: 0x086d64a7 <yuv2yuvX_sse3+103>: pmulhw %xmm0,%xmm2 0x086d64ab <yuv2yuvX_sse3+107>: pmulhw %xmm0,%xmm5 0x086d64af <yuv2yuvX_sse3+111>: paddw %xmm2,%xmm3 0x086d64b3 <yuv2yuvX_sse3+115>: paddw %xmm5,%xmm4 0x086d64b7 <yuv2yuvX_sse3+119>: jne 0x86d6490 <yuv2yuvX_sse3+80> 0x086d64b9 <yuv2yuvX_sse3+121>: psraw $0x3,%xmm3 0x086d64be <yuv2yuvX_sse3+126>: psraw $0x3,%xmm4 0x086d64c3 <yuv2yuvX_sse3+131>: packuswb %xmm4,%xmm3 => 0x086d64c7 <yuv2yuvX_sse3+135>: movntdq %xmm3,(%ebx,%ecx,1) 0x086d64cc <yuv2yuvX_sse3+140>: add $0x10,%ecx 0x086d64cf <yuv2yuvX_sse3+143>: cmp %eax,%ecx 0x086d64d1 <yuv2yuvX_sse3+145>: movdqa %xmm7,%xmm3 0x086d64d5 <yuv2yuvX_sse3+149>: movdqa %xmm7,%xmm4 0x086d64d9 <yuv2yuvX_sse3+153>: mov 0xc(%esp),%edx 0x086d64dd <yuv2yuvX_sse3+157>: mov (%edx),%esi 0x086d64df <yuv2yuvX_sse3+159>: jb 0x86d6490 <yuv2yuvX_sse3+80> 0x086d64e1 <yuv2yuvX_sse3+161>: mov (%esp),%ebx 0x086d64e4 <yuv2yuvX_sse3+164>: mov 0x4(%esp),%esi End of assembler dump. (gdb) info all-registers eax 0x98 152 ecx 0x0 0 edx 0x8de95e8 148805096 ebx 0x97f7e04 159350276 esp 0xbfffc754 0xbfffc754 ebp 0x8dea538 0x8dea538 esi 0x0 0 edi 0x0 0 eip 0x86d64c7 0x86d64c7 <yuv2yuvX_sse3+135> eflags 0x210246 [ PF ZF IF RF ID ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x33 51 st0 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st1 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st2 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st3 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st4 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st5 -nan(0xa6a6a6a6a6a6a6a6) (raw 0xffffa6a6a6a6a6a6a6a6) st6 -nan(0x20002000200020) (raw 0xffff0020002000200020) st7 0 (raw 0x00000000000000000000) fctrl 0x37f 895 fstat 0x20 32 ftag 0xffff 65535 fiseg 0x73 115 fioff 0x80838a4 134756516 foseg 0x7b 123 fooff 0xbfffcdcc -1073754676 fop 0x19c 412 xmm0 {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} xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x9e, 0x9f, 0x9e, 0x9f, 0x0 <repeats 12 times>}, v8_int16 = { 0x9f9e, 0x9f9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x9f9e9f9e, 0x0, 0x0, 0x0}, v2_int64 = {0x9f9e9f9e, 0x0}, uint128 = 0x0000000000000000000000009f9e9f9e} xmm2 {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} xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x92, 0x92, 0x93, 0x92, 0x90, 0x92, 0x92, 0x90, 0x8a, 0x8d, 0x8f, 0x8f, 0x8d, 0x8b, 0x96, 0x9b}, v8_int16 = {0x9292, 0x9293, 0x9290, 0x9092, 0x8d8a, 0x8f8f, 0x8b8d, 0x9b96}, v4_int32 = {0x92939292, 0x90929290, 0x8f8f8d8a, 0x9b968b8d}, v2_int64 = {0x9092929092939292, 0x9b968b8d8f8f8d8a}, uint128 = 0x9b968b8d8f8f8d8a9092929092939292} xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x8a, 0x0, 0x8d, 0x0, 0x8f, 0x0, 0x8f, 0x0, 0x8d, 0x0, 0x8b, 0x0, 0x96, 0x0, 0x9b, 0x0}, v8_int16 = {0x8a, 0x8d, 0x8f, 0x8f, 0x8d, 0x8b, 0x96, 0x9b}, v4_int32 = {0x8d008a, 0x8f008f, 0x8b008d, 0x9b0096}, v2_int64 = {0x8f008f008d008a, 0x9b0096008b008d}, uint128 = 0x009b0096008b008d008f008f008d008a} xmm5 {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} xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x8000000000000000, 0x8000000000000000}, v16_int8 = {0x82, 0x82, 0x82, 0x82, 0x85, 0x83, 0x81, 0x7d, 0x80, 0x7f, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, 0x7b}, v8_int16 = {0x8282, 0x8282, 0x8385, 0x7d81, 0x7f80, 0x7e7e, 0x7b7c, 0x7b7b}, ---Type <return> to continue, or q <return> to quit--- v4_int32 = {0x82828282, 0x7d818385, 0x7e7e7f80, 0x7b7b7b7c}, v2_int64 = {0x7d81838582828282, 0x7b7b7b7c7e7e7f80}, uint128 = 0x7b7b7b7c7e7e7f807d81838582828282} xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x4, 0x0, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0}, v8_int16 = {0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4}, v4_int32 = {0x40004, 0x40004, 0x40004, 0x40004}, v2_int64 = { 0x4000400040004, 0x4000400040004}, uint128 = 0x00040004000400040004000400040004} mxcsr 0x1fa0 [ PE IM DM ZM OM UM PM ] mm0 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm1 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm2 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm3 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm4 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm5 {uint64 = 0xa6a6a6a6a6a6a6a6, v2_int32 = {0xa6a6a6a6, 0xa6a6a6a6}, v4_int16 = {0xa6a6, 0xa6a6, 0xa6a6, 0xa6a6}, v8_int8 = {0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6}} mm6 {uint64 = 0x20002000200020, v2_int32 = {0x200020, 0x200020}, v4_int16 = {0x20, 0x20, 0x20, 0x20}, v8_int8 = {0x20, 0x0, 0x20, 0x0, 0x20, 0x0, 0x20, 0x0}} mm7 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}} -- Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/594#comment:6> FFmpeg <http://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac