[FFmpeg-trac] #1041(undetermined:new): Illegal instruction when opening some files with (HE-)AAC streams

FFmpeg trac at avcodec.org
Tue Mar 6 21:25:14 CET 2012


#1041: Illegal instruction when opening some files with (HE-)AAC streams
-------------------------------------+-------------------------------------
             Reporter:  qyot27       |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:
              Version:  git-master   |  undetermined
             Keywords:  aac          |               Resolution:
             Blocking:               |               Blocked By:
Analyzed by developer:  0            |  Reproduced by developer:  0
-------------------------------------+-------------------------------------

Comment (by qyot27):

 Rebuilt FFmpeg with just ./configure, the Illegal instruction still
 happens.  The backtrace seems to point to an SSE issue.


 The full output of gdb as directed on the Bug Reporting page:

 {{{
 $ gdb ffmpeg_g
 GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
 Copyright (C) 2011 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 "i686-linux-gnu".
 For bug reporting instructions, please see:
 <http://bugs.launchpad.net/gdb-linaro/>...
 Reading symbols from /home/qyot27/ffmpeg_g...done.

 (gdb) r -v 9 -loglevel 99 -i sample-5.aac
 Starting program: /home/qyot27/ffmpeg_g -v 9 -loglevel 99 -i sample-5.aac
 [Thread debugging using libthread_db enabled]
 ffmpeg version N-38596-gf095391 Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Mar  6 2012 14:21:10 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/ffmpeg_build
   libavutil      51. 41.100 / 51. 41.100
   libavcodec     54. 10.100 / 54. 10.100
   libavformat    54.  2.100 / 54.  2.100
   libavdevice    53.  4.100 / 53.  4.100
   libavfilter     2. 63.100 /  2. 63.100
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0.  7.100 /  0.  7.100
 [aac @ 0x8e85ac0] Format aac probed with size=2048 and score=51

 Program received signal SIGILL, Illegal instruction.
 ff_sbr_hf_g_filt_sse.loop1 () at libavcodec/x86/sbrdsp.asm:107
 107         movq      [r0], m2

 (gdb) bt
 #0  ff_sbr_hf_g_filt_sse.loop1 () at libavcodec/x86/sbrdsp.asm:107
 #1  0xb7f856b0 in ?? ()
 Backtrace stopped: previous frame inner to this frame (corrupt stack?)

 (gdb) disass $pc-32,$pc+32
 Dump of assembler code from 0x86d4f35 to 0x86d4f75:
    0x086d4f35 <ff_sbr_hf_g_filt_sse.loop4+59>:  adc    %al,0x500c1(%ecx)
    0x086d4f3b <ff_sbr_hf_g_filt_sse.loop4+65>:  add
 %al,-0x468afb3d(%ebx)
    0x086d4f41 <ff_sbr_hf_g_filt_sse.loop4+71>:  and    $0x3,%edi
    0x086d4f44 <ff_sbr_hf_g_filt_sse.loop4+74>:  je     0x86d4f68
 <ff_sbr_hf_g_filt_sse.end>
    0x086d4f46 <ff_sbr_hf_g_filt_sse.loop1+0>:   movss  (%edx),%xmm0
    0x086d4f4a <ff_sbr_hf_g_filt_sse.loop1+4>:   movq   (%ecx),%xmm2
    0x086d4f4e <ff_sbr_hf_g_filt_sse.loop1+8>:   punpckldq %xmm0,%xmm0
    0x086d4f52 <ff_sbr_hf_g_filt_sse.loop1+12>:  mulps  %xmm0,%xmm2
 => 0x086d4f55 <ff_sbr_hf_g_filt_sse.loop1+15>:  movq   %xmm2,(%eax)
    0x086d4f59 <ff_sbr_hf_g_filt_sse.loop1+19>:  add    $0x8,%eax
    0x086d4f5c <ff_sbr_hf_g_filt_sse.loop1+22>:  add    $0x4,%edx
    0x086d4f5f <ff_sbr_hf_g_filt_sse.loop1+25>:  add    $0x140,%ecx
    0x086d4f65 <ff_sbr_hf_g_filt_sse.loop1+31>:  dec    %edi
    0x086d4f66 <ff_sbr_hf_g_filt_sse.loop1+32>:  jne    0x86d4f46
 <ff_sbr_hf_g_filt_sse.loop1>
    0x086d4f68 <ff_sbr_hf_g_filt_sse.end+0>:     pop    %edi
    0x086d4f69 <ff_sbr_hf_g_filt_sse.end+1>:     pop    %esi
    0x086d4f6a <ff_sbr_hf_g_filt_sse.end+2>:     pop    %ebx
    0x086d4f6b <ff_sbr_hf_g_filt_sse.end+3>:     ret
    0x086d4f6c <ff_sbr_hf_g_filt_sse.end+4>:     nop
    0x086d4f6d <ff_sbr_hf_g_filt_sse.end+5>:     nop
 ---Type <return> to continue, or q <return> to quit---
    0x086d4f6e <ff_sbr_hf_g_filt_sse.end+6>:     nop
    0x086d4f6f <ff_sbr_hf_g_filt_sse.end+7>:     nop
    0x086d4f70 <auto_matrix+0>:  push   %ebp
    0x086d4f71 <auto_matrix+1>:  mov    %eax,%ebp
    0x086d4f73 <auto_matrix+3>:  push   %edi
    0x086d4f74 <auto_matrix+4>:  push   %esi
 End of assembler dump.

 (gdb) info all-registers
 eax            0xb7f91de0       -1208410656
 ecx            0xb7fcc8c0       -1208170304
 edx            0xb7f96880       -1208391552
 ebx            0x0      0
 esp            0xbfffd020       0xbfffd020
 ebp            0xb7f91d20       0xb7f91d20
 esi            0x2      2
 edi            0x3      3
 eip            0x86d4f55        0x86d4f55 <ff_sbr_hf_g_filt_sse.loop1+15>
 eflags         0x210206 [ PF IF RF ID ]
 cs             0x73     115
 ss             0x7b     123
 ds             0x7b     123
 es             0x7b     123
 fs             0x0      0
 gs             0x33     51
 st0            -inf     (raw 0xffff0000000000000000)
 st1            -inf     (raw 0xffff0000000000000000)
 st2            -0       (raw 0x80000000000000000000)
 st3            0.9921586513519287109375 (raw 0x3ffefdfe1c0000000000)
 st4            0.98437878945247803130769170820713043    (raw
 0x3ffefc003f9393100000)
 st5            1.1920928955078125e-07   (raw 0x3fe88000000000000000)
 ---Type <return> to continue, or q <return> to quit---
 st6            0        (raw 0x00000000000000000000)
 st7            1.58489322662353515625   (raw 0x3fffcaddc80000000000)
 fctrl          0x37f    895
 fstat          0x461    1121
 ftag           0x101a   4122
 fiseg          0x73     115
 fioff          0x863674c        140732236
 foseg          0x7b     123
 fooff          0xb7fd8568       -1208122008
 fop            0x5d8    1496
 xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x0, 0x0, 0xc0, 0xff, 0x0 <repeats 12 times>}, v8_int16 =
 {0x0,
     0xffc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0xffc00000, 0x0,
 0x0,
     0x0}, v2_int64 = {0xffc00000, 0x0},
   uint128 = 0x000000000000000000000000ffc00000}
 xmm1           {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}
 xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x0, 0x0, 0xc0, 0xff, 0x0 <repeats 12 times>}, v8_int16 =
 {0x0,
     0xffc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0xffc00000, 0x0,
 0x0,
     0x0}, v2_int64 = {0xffc00000, 0x0},
 ---Type <return> to continue, or q <return> to quit---
   uint128 = 0x000000000000000000000000ffc00000}
 xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x86, 0xe5, 0x4b, 0x2d, 0x4f, 0xd5, 0x54, 0x2d, 0x0, 0x0,
 0x0,
     0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xe586, 0x2d4b, 0xd54f, 0x2d54,
 0x0,
     0x0, 0x0, 0x0}, v4_int32 = {0x2d4be586, 0x2d54d54f, 0x0, 0x0},
 v2_int64 = {
     0x2d54d54f2d4be586, 0x0}, uint128 =
 0x00000000000000002d54d54f2d4be586}
 xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0xb5, 0xb7, 0xd8, 0x2a, 0x8a, 0xdf, 0xc6, 0x2a, 0x3a, 0x62,
     0x1d, 0x2c, 0x6f, 0x90, 0xe3, 0x2a}, v8_int16 = {0xb7b5, 0x2ad8,
 0xdf8a,
     0x2ac6, 0x623a, 0x2c1d, 0x906f, 0x2ae3}, v4_int32 = {0x2ad8b7b5,
     0x2ac6df8a, 0x2c1d623a, 0x2ae3906f}, v2_int64 = {0x2ac6df8a2ad8b7b5,
     0x2ae3906f2c1d623a}, uint128 = 0x2ae3906f2c1d623a2ac6df8a2ad8b7b5}
 xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x7c, 0xf9, 0xfa, 0x2c, 0xc9, 0x25, 0x5c, 0x2d, 0xfe, 0xbe,
     0x5b, 0x29, 0x60, 0x85, 0x21, 0x2a}, v8_int16 = {0xf97c, 0x2cfa,
 0x25c9,
     0x2d5c, 0xbefe, 0x295b, 0x8560, 0x2a21}, v4_int32 = {0x2cfaf97c,
     0x2d5c25c9, 0x295bbefe, 0x2a218560}, v2_int64 = {0x2d5c25c92cfaf97c,
     0x2a218560295bbefe}, uint128 = 0x2a218560295bbefe2d5c25c92cfaf97c}
 xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x28, 0xe4, 0x7b, 0x37, 0xa0, 0x37, 0x82, 0x37, 0x2c, 0x59,
     0x70, 0x37, 0xbd, 0x65, 0x6b, 0x37}, v8_int16 = {0xe428, 0x377b,
 0x37a0,
     0x3782, 0x592c, 0x3770, 0x65bd, 0x376b}, v4_int32 = {0x377be428,
     0x378237a0, 0x3770592c, 0x376b65bd}, v2_int64 = {0x378237a0377be428,
 ---Type <return> to continue, or q <return> to quit---
     0x376b65bd3770592c}, uint128 = 0x376b65bd3770592c378237a0377be428}
 xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
   v16_int8 = {0x80, 0xe1, 0x10, 0x35, 0xe3, 0x2a, 0xf, 0x36, 0x2f, 0x5a,
 0x25,
     0x36, 0xd4, 0xff, 0xa9, 0x36}, v8_int16 = {0xe180, 0x3510, 0x2ae3,
 0x360f,
     0x5a2f, 0x3625, 0xffd4, 0x36a9}, v4_int32 = {0x3510e180, 0x360f2ae3,
     0x36255a2f, 0x36a9ffd4}, v2_int64 = {0x360f2ae33510e180,
     0x36a9ffd436255a2f}, uint128 = 0x36a9ffd436255a2f360f2ae33510e180}
 mxcsr          0x1fb2   [ DE UE PE IM DM ZM OM UM PM ]
 mm0            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm1            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm2            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm3            {uint64 = 0xfdfe1c0000000000, v2_int32 = {0x0, 0xfdfe1c00},
   v4_int16 = {0x0, 0x0, 0x1c00, 0xfdfe}, v8_int8 = {0x0, 0x0, 0x0, 0x0,
 0x0,
     0x1c, 0xfe, 0xfd}}
 mm4            {uint64 = 0xfc003f9393100000, v2_int32 = {0x93100000,
     0xfc003f93}, v4_int16 = {0x0, 0x9310, 0x3f93, 0xfc00}, v8_int8 = {0x0,
     0x0, 0x10, 0x93, 0x93, 0x3f, 0x0, 0xfc}}
 mm5            {uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000},
   v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0,
 0x0,
     0x0, 0x80}}
 ---Type <return> to continue, or q <return> to quit---
 mm6            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
     0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
 mm7            {uint64 = 0xcaddc80000000000, v2_int32 = {0x0, 0xcaddc800},
   v4_int16 = {0x0, 0x0, 0xc800, 0xcadd}, v8_int8 = {0x0, 0x0, 0x0, 0x0,
 0x0,
     0xc8, 0xdd, 0xca}}

 (gdb)
 }}}

 I'll also go about trying to find the particular change.  Looking at the
 commit log, it may have been
 [http://git.videolan.org/?p=ffmpeg.git;a=commit;h=2784d187919b48022a89633fb3b5a99ca97cf869
 this one], since it makes reference to sbr_hf_g_filt.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1041#comment:3>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list