[FFmpeg-trac] #4151(swscale:open): Crash the ffmpeg then convert YV12 (yuv420p) to NV12 if width is less than 32

FFmpeg trac at avcodec.org
Tue Dec 2 16:55:04 CET 2014


#4151: Crash the ffmpeg then convert YV12 (yuv420p) to NV12 if width is less than
32
---------------------------------------+-----------------------------------
             Reporter:  v0lt           |                    Owner:
                 Type:  defect         |                   Status:  open
             Priority:  important      |                Component:  swscale
              Version:  git-master     |               Resolution:
             Keywords:  crash SIGSEGV  |               Blocked By:
             Blocking:                 |  Reproduced by developer:  1
Analyzed by developer:  0              |
---------------------------------------+-----------------------------------
Changes (by cehoyos):

 * keywords:   => crash SIGSEGV
 * priority:  normal => important
 * status:  new => open
 * reproduced:  0 => 1


Comment:

 For future tickets: Please always provide your failing command line
 together with the complete, uncut console output.
 {{{
 (gdb) r -f lavfi -i color=s=16x16 -pix_fmt nv12 -f null -
 Starting program: ffmpeg_g -f lavfi -i color=s=16x16 -pix_fmt nv12 -f null
 -
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib64/libthread_db.so.1".
 ffmpeg version N-68146-gd771696 Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Dec  2 2014 16:49:09 with gcc 4.7 (SUSE Linux)
   configuration: --enable-gpl
   libavutil      54. 15.100 / 54. 15.100
   libavcodec     56. 13.100 / 56. 13.100
   libavformat    56. 15.101 / 56. 15.101
   libavdevice    56.  3.100 / 56.  3.100
   libavfilter     5.  2.103 /  5.  2.103
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 [New Thread 0x7ffff14f0700 (LWP 18162)]
 [New Thread 0x7ffff0cef700 (LWP 18163)]
 [New Thread 0x7ffff04ee700 (LWP 18164)]
 [New Thread 0x7fffefced700 (LWP 18165)]
 [New Thread 0x7fffef4ec700 (LWP 18166)]
 [New Thread 0x7fffeeceb700 (LWP 18167)]
 [New Thread 0x7fffee4ea700 (LWP 18168)]
 [New Thread 0x7fffedce9700 (LWP 18169)]
 [New Thread 0x7fffed4e8700 (LWP 18170)]
 Input #0, lavfi, from 'color=s=16x16':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 16x16 [SAR
 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
 [New Thread 0x7fffecce7700 (LWP 18171)]
 [New Thread 0x7fffec4e6700 (LWP 18172)]
 [New Thread 0x7fffebce5700 (LWP 18173)]
 [New Thread 0x7fffeb4e4700 (LWP 18174)]
 [New Thread 0x7fffeace3700 (LWP 18175)]
 [New Thread 0x7fffea4e2700 (LWP 18176)]
 [New Thread 0x7fffe9ce1700 (LWP 18177)]
 [New Thread 0x7fffe94e0700 (LWP 18178)]
 [New Thread 0x7fffe8cdf700 (LWP 18179)]
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf56.15.101
     Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12, 16x16 [SAR 1:1
 DAR 1:1], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
     Metadata:
       encoder         : Lavc56.13.100 rawvideo
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
 Press [q] to stop, [?] for help

 Program received signal SIGSEGV, Segmentation fault.
 0x0000000000e477af in interleaveBytes_sse2 (
     src1=0x1a73980
 "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200",
     src2=0x1a739c0
 "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200",
     dest=0x1a68660
 "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200",
 width=8, height=8,
     src1Stride=8, src2Stride=8, dstStride=32) at
 libswscale/x86/rgb2rgb_template.c:1891
 1891            __asm__(
 (gdb) disass $pc-32,$pc+32
 Dump of assembler code from 0xe4778f to 0xe477cf:
    0x0000000000e4778f <interleaveBytes_sse2+79>:        mov
 %rax,-0x8(%rsp)
    0x0000000000e47794 <interleaveBytes_sse2+84>:        nopl   0x0(%rax)
    0x0000000000e47798 <interleaveBytes_sse2+88>:        xor    %rax,%rax
    0x0000000000e4779b <interleaveBytes_sse2+91>:        prefetchnta
 0x40(%rdi,%rax,1)
    0x0000000000e477a0 <interleaveBytes_sse2+96>:        prefetchnta
 0x40(%rsi,%rax,1)
    0x0000000000e477a5 <interleaveBytes_sse2+101>:       movdqa
 (%rdi,%rax,1),%xmm0
    0x0000000000e477aa <interleaveBytes_sse2+106>:       movdqa
 (%rdi,%rax,1),%xmm1
 => 0x0000000000e477af <interleaveBytes_sse2+111>:       movdqa
 (%rsi,%rax,1),%xmm2
    0x0000000000e477b4 <interleaveBytes_sse2+116>:       punpcklbw
 %xmm2,%xmm0
    0x0000000000e477b8 <interleaveBytes_sse2+120>:       punpckhbw
 %xmm2,%xmm1
    0x0000000000e477bc <interleaveBytes_sse2+124>:       movntdq
 %xmm0,(%rdx,%rax,2)
    0x0000000000e477c1 <interleaveBytes_sse2+129>:       movntdq
 %xmm1,0x10(%rdx,%rax,2)
    0x0000000000e477c7 <interleaveBytes_sse2+135>:       add    $0x10,%rax
    0x0000000000e477cb <interleaveBytes_sse2+139>:       cmp    %r13,%rax
    0x0000000000e477ce <interleaveBytes_sse2+142>:       jb     0xe4779b
 <interleaveBytes_sse2+91>
 End of assembler dump.
 (gdb) info all-register
 rax            0x4640   17984
 rbx            0x0      0
 rcx            0x8      8
 rdx            0x1a68660        27690592
 rsi            0x1a739c0        27736512
 rdi            0x1a73980        27736448
 rbp            0x0      0x0
 rsp            0x7fffffffd028   0x7fffffffd028
 r8             0x8      8
 r9             0x8      8
 r10            0x0      0
 r11            0x8      8
 r12            0x0      0
 r13            0xfffffffffffffff9       -7
 r14            0x0      0
 r15            0x10     16
 rip            0xe477af 0xe477af <interleaveBytes_sse2+111>
 eflags         0x10217  [ CF PF AF 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
 mxcsr          0x1fa8   [ OE PE IM DM ZM OM UM PM ]
 ymm0           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm1           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm2           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm3           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm4           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0,
     0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x73, 0x6d, 0x70, 0x74,
 0x65, 0x31, 0x37,
     0x30, 0x6d, 0x0, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x0 <repeats 16
 times>},
   v16_int16 = {0x6d73, 0x7470, 0x3165, 0x3037, 0x6d, 0x6e49, 0x6176,
 0x696c, 0x0, 0x0, 0x0,
     0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x74706d73, 0x30373165,
 0x6e49006d, 0x696c6176,
     0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x3037316574706d73,
 0x696c61766e49006d, 0x0, 0x0},
   v2_int128 = {0x696c61766e49006d3037316574706d73,
 0x00000000000000000000000000000000}}
 ymm5           {v8_float = {0x0, 0x1, 0x3, 0x3, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x1, 0x20,
     0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x40,
 0x40, 0x40, 0x40,
     0x40, 0x40, 0x40, 0x40, 0x0 <repeats 16 times>}, v16_int16 = {0x0,
 0x0, 0x0, 0x3ff0,
     0x4040, 0x4040, 0x4040, 0x4040, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 0x0}, v8_int32 = {
     0x0, 0x3ff00000, 0x40404040, 0x40404040, 0x0, 0x0, 0x0, 0x0}, v4_int64
 = {
     0x3ff0000000000000, 0x4040404040404040, 0x0, 0x0}, v2_int128 = {
     0x40404040404040403ff0000000000000,
 0x00000000000000000000000000000000}}
 ymm6           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0,
     0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x65,
     0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x0 <repeats 16 times>},
 v16_int16 = {0x0,
     0x0, 0x0, 0x0, 0x6665, 0x6f63, 0x6e75, 0x6574, 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0},
   v8_int32 = {0x0, 0x0, 0x6f636665, 0x65746e75, 0x0, 0x0, 0x0, 0x0},
 v4_int64 = {0x0,
     0x65746e756f636665, 0x0, 0x0}, v2_int128 =
 {0x65746e756f6366650000000000000000,
     0x00000000000000000000000000000000}}
 ymm7           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x20 <repeats 16 times>, 0x0 <repeats 16
 times>}, v16_int16 = {
     0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x2020, 0x0,
 0x0, 0x0, 0x0, 0x0,
     0x0, 0x0, 0x0}, v8_int32 = {0x20202020, 0x20202020, 0x20202020,
 0x20202020, 0x0, 0x0,
     0x0, 0x0}, v4_int64 = {0x2020202020202020, 0x2020202020202020, 0x0,
 0x0}, v2_int128 = {
     0x20202020202020202020202020202020,
 0x00000000000000000000000000000000}}
 ymm8           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm9           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {
     0x8000000000000000, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x0,
 0x0,
     0xff <repeats 14 times>, 0x0 <repeats 16 times>}, v16_int16 = {0x0,
 0xffff, 0xffff,
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0},
   v8_int32 = {0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0,
 0x0, 0x0},
   v4_int64 = {0xffffffffffff0000, 0xffffffffffffffff, 0x0, 0x0}, v2_int128
 = {
     0xffffffffffffffffffffffffffff0000,
 0x00000000000000000000000000000000}}
 ymm10          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0
 <repeats 16 times>},
   v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0,
 0x0, 0x0, 0x0},
   v2_int128 = {0x00000000000000000000000000000000,
 0x00000000000000000000000000000000}}
 ymm11          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
 0xff, 0x0, 0x0,
     0x0, 0xff, 0xff, 0x0 <repeats 17 times>}, v16_int16 = {0x0, 0xff00,
 0x0, 0x0, 0xff00,
     0x0, 0xff00, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 =
 {0xff000000, 0x0,
     0xff00, 0xffff00, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0xff000000,
 0xffff000000ff00, 0x0,
     0x0}, v2_int128 = {0x00ffff000000ff0000000000ff000000,
     0x00000000000000000000000000000000}}
 ymm12          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4, 0x3c,
     0x0 <repeats 24 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x3cc4, 0x0
 <repeats 12 times>},
   v8_int32 = {0x0, 0x3cc40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {
     0x3cc4000000000000, 0x0, 0x0, 0x0}, v2_int128 =
 {0x00000000000000003cc4000000000000,
     0x00000000000000000000000000000000}}
 ymm13          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x59, 0xbc,
     0x0 <repeats 24 times>}, v16_int16 = {0x0, 0x0, 0x8000, 0xbc59, 0x0
 <repeats 12 times>},
   v8_int32 = {0x0, 0xbc598000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {
     0xbc59800000000000, 0x0, 0x0, 0x0}, v2_int128 =
 {0x0000000000000000bc59800000000000,
     0x00000000000000000000000000000000}}
 ymm14          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x0, 0x0,
     0x0, 0x0}, v32_int8 = {0x8e, 0x85, 0x83, 0xe8, 0xf0, 0x24, 0x53, 0x3c,
     0x0 <repeats 24 times>}, v16_int16 = {0x858e, 0xe883, 0x24f0, 0x3c53,
     0x0 <repeats 12 times>}, v8_int32 = {0xe883858e, 0x3c5324f0, 0x0, 0x0,
 0x0, 0x0, 0x0,
     0x0}, v4_int64 = {0x3c5324f0e883858e, 0x0, 0x0, 0x0}, v2_int128 = {
     0x00000000000000003c5324f0e883858e,
 0x00000000000000000000000000000000}}
 ymm15          {v8_float = {0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
 v4_double = {0x2d, 0x0,
     0x0, 0x0}, v32_int8 = {0xc0, 0x9, 0xf2, 0x16, 0xb5, 0xdf, 0x46, 0x40,
     0x0 <repeats 24 times>}, v16_int16 = {0x9c0, 0x16f2, 0xdfb5, 0x4046,
     0x0 <repeats 12 times>}, v8_int32 = {0x16f209c0, 0x4046dfb5, 0x0, 0x0,
 0x0, 0x0, 0x0,
     0x0}, v4_int64 = {0x4046dfb516f209c0, 0x0, 0x0, 0x0}, v2_int128 = {
     0x00000000000000004046dfb516f209c0,
 0x00000000000000000000000000000000}}
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4151#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list