[FFmpeg-trac] #3722(undetermined:new): Illegal instruction, SIGILL when encoding libvpx-vp9

FFmpeg trac at avcodec.org
Tue Jun 17 09:07:31 CEST 2014


#3722: Illegal instruction, SIGILL when encoding libvpx-vp9
-------------------------------------+-------------------------------------
             Reporter:  xxleite      |                     Type:  defect
               Status:  new          |                 Priority:  important
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:  libvpx vp9   |               Blocked By:
  encoding crash                     |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 I'm using the last version of libvpx (v1.3.0-3148-g6cfb854) and ffmpeg
 (N-64012-g61df081).

 I tried to decode at least three diferent videos and process receive a
 SIGILL "Illegal instruction" and stops.

 How to reproduce:

 {{{
 gdb --args /usr/local/bin/ffmpeg -i /home/xico/test/big_buck_bunny.mov
 -passlogfile /tmp/x0y0z0 -s hd480 -c:v libvpx-vp9 -threads 0 -b:v 1027k
 -quality good -pass 1 -y -f webm -an /dev/null
 GNU gdb (GDB) 7.4.1-debian
 Copyright (C) 2012 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later
 <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
 and "show warranty" for details.
 This GDB was configured as "x86_64-linux-gnu".
 For bug reporting instructions, please see:
 <http://www.gnu.org/software/gdb/bugs/>...
 Reading symbols from /usr/local/bin/ffmpeg...(no debugging symbols
 found)...done.
 (gdb) r
 Starting program: /usr/local/bin/ffmpeg -i
 /home/xico/test/big_buck_bunny.mov -passlogfile /tmp/x0y0z0 -s hd480 -c:v
 libvpx-vp9 -threads 0 -b:v 1027k -quality good -pass 1 -y -f webm -an
 /dev/null
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
 ffmpeg version N-64012-g61df081-syslint Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Jun 17 2014 06:13:41 with gcc 4.7 (Debian 4.7.2-5)
   configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-
 nonfree --enable-iconv --enable-gpl --enable-pthreads --enable-
 libopencore-amrnb --enable-decoder=liba52 --enable-libopencore-amrwb
 --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis
 --enable-libx264 --enable-libxvid --enable-libvpx --extra-
 cflags=-I/usr/local/cpffmpeg/include/ --extra-
 ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-
 version=syslint --enable-libass
   libavutil      52. 89.100 / 52. 89.100
   libavcodec     55. 67.100 / 55. 67.100
   libavformat    55. 43.100 / 55. 43.100
   libavdevice    55. 13.101 / 55. 13.101
   libavfilter     4.  8.100 /  4.  8.100
   libswscale      2.  6.100 /  2.  6.100
   libswresample   0. 19.100 /  0. 19.100
   libpostproc    52.  3.100 / 52.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
 '/home/xico/test/big_buck_bunny.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 537199360
     compatible_brands: qt
     creation_time   : 2008-05-27 18:32:32
     timecode        : 00:00:00:00
   Duration: 00:09:56.46, start: 0.000000, bitrate: 3342 kb/s
     Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
 bt709), 854x480, 2899 kb/s, 24 fps, 24 tbr, 2400 tbn, 4800 tbc (default)
     Metadata:
       creation_time   : 2008-05-27 18:32:32
       handler_name    : Apple Alias Data Handler
       encoder         : H.264
     Stream #0:1(eng): Data: none (tmcd / 0x64636D74) (default)
     Metadata:
       creation_time   : 2008-05-27 18:32:32
       handler_name    : Apple Alias Data Handler
       timecode        : 00:00:00:00
     Stream #0:2(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp,
 437 kb/s (default)
     Metadata:
       creation_time   : 2008-05-27 18:32:32
       handler_name    : Apple Alias Data Handler
 [libvpx-vp9 @ 0x6518e0] v1.3.0-3148-g6cfb854
 Output #0, webm, to '/dev/null':
   Metadata:
     major_brand     : qt
     minor_version   : 537199360
     compatible_brands: qt
     timecode        : 00:00:00:00
     encoder         : Lavf55.43.100
     Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuv420p, 852x480, q=-1--1,
 pass 1, 1027 kb/s, 24 fps, 1k tbn, 24 tbc (default)
     Metadata:
       creation_time   : 2008-05-27 18:32:32
       handler_name    : Apple Alias Data Handler
       encoder         : Lavc55.67.100 libvpx-vp9
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9))
 Press [q] to stop, [?] for help

 Program received signal SIGILL, Illegal instruction.
 0x00007ffff3923c40 in vp9_fdct4x4_avx2 () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 (gdb) bt
 #0  0x00007ffff3923c40 in vp9_fdct4x4_avx2 () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #1  0x00007ffff38b5228 in encode_block_intra () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #2  0x00007ffff3852147 in vp9_foreach_transformed_block_in_plane () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #3  0x00007ffff38b75ea in vp9_encode_intra_block_plane () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #4  0x00007ffff38ba3fd in vp9_first_pass () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #5  0x00007ffff38d40ba in vp9_get_compressed_data () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #6  0x00007ffff388b621 in encoder_encode () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #7  0x00007ffff37dfc4c in vpx_codec_encode () from
 /usr/local/cpffmpeg/lib/libvpx.so.1
 #8  0x00007ffff6559336 in ?? () from
 /usr/local/cpffmpeg/lib/libavcodec.so.55
 #9  0x00007ffff6728774 in avcodec_encode_video2 () from
 /usr/local/cpffmpeg/lib/libavcodec.so.55
 #10 0x000000000041ec67 in ?? ()
 #11 0x000000000040898d in ?? ()
 #12 0x00007ffff503fead in __libc_start_main () from /lib/x86_64-linux-
 gnu/libc.so.6
 #13 0x0000000000409149 in ?? ()
 #14 0x00007fffffffe618 in ?? ()
 #15 0x000000000000001c in ?? ()
 #16 0x0000000000000016 in ?? ()
 #17 0x00007fffffffe8d6 in ?? ()
 #18 0x00007fffffffe8ec in ?? ()
 #19 0x00007fffffffe8ef in ?? ()
 #20 0x00007fffffffe912 in ?? ()
 #21 0x00007fffffffe91f in ?? ()
 #22 0x00007fffffffe92b in ?? ()
 #23 0x00007fffffffe92e in ?? ()
 #24 0x00007fffffffe934 in ?? ()
 #25 0x00007fffffffe939 in ?? ()
 #26 0x00007fffffffe944 in ?? ()
 #27 0x00007fffffffe94d in ?? ()
 #28 0x00007fffffffe94f in ?? ()
 #29 0x00007fffffffe954 in ?? ()
 #30 0x00007fffffffe95a in ?? ()
 #31 0x00007fffffffe963 in ?? ()
 #32 0x00007fffffffe968 in ?? ()
 #33 0x00007fffffffe96e in ?? ()
 #34 0x00007fffffffe970 in ?? ()
 #35 0x00007fffffffe973 in ?? ()
 #36 0x00007fffffffe976 in ?? ()
 #37 0x00007fffffffe97b in ?? ()
 #38 0x00007fffffffe97f in ?? ()
 #39 0x0000000000000000 in ?? ()
 (gdb) disass $pc-32,$pc+32
 Dump of assembler code from 0x7ffff3923c20 to 0x7ffff3923c60:
    0x00007ffff3923c20 <FDCT32x32_2D+13216>: or     %al,(%rcx)
    0x00007ffff3923c22 <FDCT32x32_2D+13218>: add    %al,(%rax)
    0x00007ffff3923c24 <FDCT32x32_2D+13220>: movdqa %xmm8,0x148(%rsp)
    0x00007ffff3923c2e <FDCT32x32_2D+13230>: movdqa %xmm1,0x68(%rsp)
    0x00007ffff3923c34 <FDCT32x32_2D+13236>: jmpq   0x7ffff3921191
 <FDCT32x32_2D+2321>
    0x00007ffff3923c39:  nop
    0x00007ffff3923c3a:  nop
    0x00007ffff3923c3b:  nop
    0x00007ffff3923c3c:  nop
    0x00007ffff3923c3d:  nop
    0x00007ffff3923c3e:  nop
    0x00007ffff3923c3f:  nop
 => 0x00007ffff3923c40 <vp9_fdct4x4_avx2+0>: vpxor  %xmm10,%xmm10,%xmm10
    0x00007ffff3923c45 <vp9_fdct4x4_avx2+5>: movslq %edx,%rax
    0x00007ffff3923c48 <vp9_fdct4x4_avx2+8>: vpxor  %xmm1,%xmm1,%xmm1
    0x00007ffff3923c4c <vp9_fdct4x4_avx2+12>:  vpxor  %xmm3,%xmm3,%xmm3
    0x00007ffff3923c50 <vp9_fdct4x4_avx2+16>:  vmovdqa 0x6aab8(%rip),%xmm8
 # 0x7ffff398e710
    0x00007ffff3923c58 <vp9_fdct4x4_avx2+24>:  vpinsrq
 $0x0,(%rdi,%rax,2),%xmm10,%xmm10
    0x00007ffff3923c5f <vp9_fdct4x4_avx2+31>:  lea    (%rdx,%rdx,1),%eax
 End of assembler dump.
 (gdb) info all-registers
 rax            0x7fffee45c740 140737190938432
 rbx            0x7fffefc9d020 140737216368672
 rcx            0x0  0
 rdx            0x10 16
 rsi            0xb999c0 12163520
 rdi            0x7fffefc9d020 140737216368672
 rbp            0x7fffefc9d020 0x7fffefc9d020
 rsp            0x7fffffffd5c8 0x7fffffffd5c8
 r8             0x7fffebb17740 140737147664192
 r9             0x4a0  1184
 r10            0x0  0
 r11            0x0  0
 r12            0x7fffefca3140 140737216393536
 r13            0x7fffee45b4c0 140737190933696
 r14            0x7fffebb164c0 140737147659456
 r15            0x10 16
 rip            0x7ffff3923c40 0x7ffff3923c40 <vp9_fdct4x4_avx2>
 eflags         0x10246  [ PF ZF IF RF ]
 cs             0x33 51
 ss             0x2b 43
 ds             0x0  0
 es             0x0  0
 fs             0x0  0
 gs             0x0  0
 st0            -nan(0xff90ff90ff90ff90) (raw 0xffffff90ff90ff90ff90)
 st1            -nan(0x80008000800080) (raw 0xffff0080008000800080)
 st2            -nan(0xff90ff90ff90ff90) (raw 0xffffff90ff90ff90ff90)
 st3            -nan(0x80008000800080) (raw 0xffff0080008000800080)
 st4            -nan(0x101010180808080)  (raw 0xffff0101010180808080)
 st5            -nan(0x101010180808080)  (raw 0xffff0101010180808080)
 st6            -nan(0x20002000200020) (raw 0xffff0020002000200020)
 st7            -inf (raw 0xffff0000000000000000)
 fctrl          0x27f  639
 fstat          0x20 32
 ftag           0xaaaa 43690
 fiseg          0x7fff 32767
 fioff          0xf55edb87 -178332793
 foseg          0x7fff 32767
 fooff          0xffffd718 -10472
 fop            0x0  0
 xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0x40, 0xf, 0x56, 0x0, 0x40, 0xf, 0x56, 0x0, 0x40, 0xf, 0x56,
 0x0, 0x40, 0xf, 0x56, 0x0}, v8_int16 = {
     0xf40, 0x56, 0xf40, 0x56, 0xf40, 0x56, 0xf40, 0x56}, v4_int32 =
 {0x560f40, 0x560f40, 0x560f40, 0x560f40}, v2_int64 = {0x560f4000560f40,
 0x560f4000560f40},
   uint128 = 0x00560f4000560f4000560f4000560f40}
 xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0xc4, 0x9, 0x0, 0x0, 0xc4, 0x9, 0x0, 0x0, 0xc4, 0x9, 0x0, 0x0,
 0xc4, 0x9, 0x0, 0x0}, v8_int16 = {0x9c4,
     0x0, 0x9c4, 0x0, 0x9c4, 0x0, 0x9c4, 0x0}, v4_int32 = {0x9c4, 0x9c4,
 0x9c4, 0x9c4}, v2_int64 = {0x9c4000009c4, 0x9c4000009c4}, uint128 =
 0x000009c4000009c4000009c4000009c4}
 xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0x40, 0xf, 0x56, 0x0, 0x40, 0xf, 0x56, 0x0, 0x40, 0xf, 0x56,
 0x0, 0x40, 0xf, 0x56, 0x0}, v8_int16 = {
     0xf40, 0x56, 0xf40, 0x56, 0xf40, 0x56, 0xf40, 0x56}, v4_int32 =
 {0x560f40, 0x560f40, 0x560f40, 0x560f40}, v2_int64 = {0x560f4000560f40,
 0x560f4000560f40},
   uint128 = 0x00560f4000560f4000560f4000560f40}
 xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
 {0x8000000000000000, 0x8000000000000000}, v16_int8 = {0xff, 0xff, 0xff,
 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f,
     0xff, 0xff, 0xff, 0x7f}, v8_int16 = {0xffff, 0x7fff, 0xffff, 0x7fff,
 0xffff, 0x7fff, 0xffff, 0x7fff}, v4_int32 = {0x7fffffff, 0x7fffffff,
 0x7fffffff, 0x7fffffff}, v2_int64 = {
     0x7fffffff7fffffff, 0x7fffffff7fffffff}, uint128 =
 0x7fffffff7fffffff7fffffff7fffffff}
 xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0x3, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0,
 0x3, 0x0, 0x0, 0x0}, v8_int16 = {0x3, 0x0,
     0x3, 0x0, 0x3, 0x0, 0x3, 0x0}, v4_int32 = {0x3, 0x3, 0x3, 0x3},
 v2_int64 = {0x300000003, 0x300000003}, uint128 =
 0x00000003000000030000000300000003}
 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 = {0x0, 0x0},
 v16_int8 = {0x0, 0x3d, 0x58, 0x1, 0x0, 0x3d, 0x58, 0x1, 0x0, 0x3d, 0x58,
 0x1, 0x0, 0x3d, 0x58, 0x1}, v8_int16 = {
     0x3d00, 0x158, 0x3d00, 0x158, 0x3d00, 0x158, 0x3d00, 0x158}, v4_int32
 = {0x1583d00, 0x1583d00, 0x1583d00, 0x1583d00}, v2_int64 =
 {0x1583d0001583d00, 0x1583d0001583d00},
   uint128 = 0x01583d0001583d0001583d0001583d00}
 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 = {0x40, 0x23, 0x0, 0x0, 0x40, 0x23, 0x0, 0x0, 0x40, 0x23, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {
     0x2340, 0x0, 0x2340, 0x0, 0x2340, 0x0, 0x0, 0x0}, v4_int32 = {0x2340,
 0x2340, 0x2340, 0x0}, v2_int64 = {0x234000002340, 0x2340}, uint128 =
 0x00000000000023400000234000002340}
 xmm9           {v4_float = {0x0, 0x2, 0x0, 0x0}, v2_double = {0x18, 0x0},
 v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x38, 0x40, 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0,
     0x0, 0xc000, 0x4038, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x4038c000,
 0x0, 0x0}, v2_int64 = {0x4038c00000000000, 0x0}, uint128 =
 0x00000000000000004038c00000000000}
 xmm10          {v4_float = {0x0, 0x4b, 0x0, 0x0}, v2_double =
 {0x5ffffffffff, 0x0}, v16_int8 = {0x2c, 0xfd, 0xff, 0xff, 0xff, 0xff,
 0x97, 0x42, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
   v8_int16 = {0xfd2c, 0xffff, 0xffff, 0x4297, 0x0, 0x0, 0x0, 0x0},
 v4_int32 = {0xfffffd2c, 0x4297ffff, 0x0, 0x0}, v2_int64 =
 {0x4297fffffffffd2c, 0x0},
   uint128 = 0x00000000000000004297fffffffffd2c}
 xmm11          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0x1, 0x24, 0xc, 0xb3, 0x25, 0xd7, 0x5a, 0x3e, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {
     0x2401, 0xb30c, 0xd725, 0x3e5a, 0x0, 0x0, 0x0, 0x0}, v4_int32 =
 {0xb30c2401, 0x3e5ad725, 0x0, 0x0}, v2_int64 = {0x3e5ad725b30c2401, 0x0},
 uint128 = 0x00000000000000003e5ad725b30c2401}
 xmm12          {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
 v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
     0x0, 0x3ff0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x3ff00000, 0x0,
 0x0}, v2_int64 = {0x3ff0000000000000, 0x0}, uint128 =
 0x00000000000000003ff0000000000000}
 xmm13          {v4_float = {0xf9507408, 0x0, 0x0, 0x0}, v2_double = {0x0,
 0x0}, v16_int8 = {0x7f, 0xf1, 0xd5, 0xcc, 0x24, 0x22, 0xb6, 0xbb, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
   v8_int16 = {0xf17f, 0xccd5, 0x2224, 0xbbb6, 0x0, 0x0, 0x0, 0x0},
 v4_int32 = {0xccd5f17f, 0xbbb62224, 0x0, 0x0}, v2_int64 =
 {0xbbb62224ccd5f17f, 0x0},
   uint128 = 0x0000000000000000bbb62224ccd5f17f}
 xmm14          {v4_float = {0x0, 0x2, 0x0, 0x0}, v2_double = {0xb, 0x0},
 v16_int8 = {0x80, 0xdb, 0xe9, 0x2e, 0x27, 0x91, 0x27, 0x40, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {
     0xdb80, 0x2ee9, 0x9127, 0x4027, 0x0, 0x0, 0x0, 0x0}, v4_int32 =
 {0x2ee9db80, 0x40279127, 0x0, 0x0}, v2_int64 = {0x402791272ee9db80, 0x0},
 uint128 = 0x0000000000000000402791272ee9db80}
 xmm15          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
 v16_int8 = {0xa0, 0x83, 0x47, 0x3, 0x1d, 0x3c, 0x8a, 0xb5, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {
     0x83a0, 0x347, 0x3c1d, 0xb58a, 0x0, 0x0, 0x0, 0x0}, v4_int32 =
 {0x34783a0, 0xb58a3c1d, 0x0, 0x0}, v2_int64 = {0xb58a3c1d034783a0, 0x0},
 uint128 = 0x0000000000000000b58a3c1d034783a0}
 mxcsr          0x1fa8 [ OE PE IM DM ZM OM UM PM ]
 }}}

 cpu:

 {{{
 less /proc/cpuinfo
 processor       : 0
 vendor_id       : GenuineIntel
 cpu family      : 6
 model           : 2
 model name      : QEMU Virtual CPU version 1.0
 stepping        : 3
 microcode       : 0x1
 cpu MHz         : 1999.999
 cache size      : 4096 KB
 fpu             : yes
 fpu_exception   : yes
 cpuid level     : 4
 wp              : yes
 flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca
 cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm up rep_good nopl pni
 vmx cx16 popcnt hypervisor lahf_lm
 bogomips        : 3999.99
 clflush size    : 64
 cache_alignment : 64
 address sizes   : 40 bits physical, 48 bits virtual
 power management:
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3722>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list