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

FFmpeg trac at avcodec.org
Tue Mar 6 04:43:52 CET 2012


#1041: Illegal instruction when opening some files with (HE-)AAC streams
-------------------------------------+-------------------------------------
             Reporter:  qyot27       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:  aacdec       |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Sometime between the 18th of February and the 25th of February, the AAC
 decoder (at least, I think it's the AAC decoder doing this) started
 breaking on certain files.  I've observed it in native builds for both
 Windows (built with MinGW) and Linux.  It seems to fail with files that
 contain AAC streams that MediaInfo detects as being HE-AAC, as my
 purchases from iTunes (which report as standard LC-AAC) can open fine in
 the same FFmpeg builds that have issues with the streams that report as
 HE-AAC.

 Since I also saw avconv crash with the same sample, I'm guessing this
 issue arose with one of the merges that occurred during the timeframe
 between the 18th and 25th.  I tried to use git revert on specific AAC-
 related commits from that date range, but that didn't resolve the error.

 Furthermore, even this HE-AAC thing doesn't seem to occur on other
 computers I have access to that are much newer and more powerful than
 mine.  For reference, my setup has a Celeron Coppermine and 512MBs of
 PC133 SDRAM.  Another computer that didn't exhibit this issue runs an
 Athlon64 Orleans with 2GBs of DDR2 SDRAM (I think DDR2-800).  The actual
 FFmpeg binary used was the same on both computers.

 The output of a working FFmpeg build:
 {{{

 ./ffmpeg.exe -v 9 -loglevel 99 -i $HOME/sample-5.flv
 ffmpeg version r37999 git-57182b9 Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Feb 18 2012 21:44:50 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/win32_build --cross-
 prefix=i686-w64-mingw32- --enable-gpl --enable-version3 --disable-
 w32threads --enable-memalign-hack --disable-decoder=utvideo --enable-
 libutvideo --enable-libxvid --disable-encoder=mpeg4 --enable-avisynth
 --cpu=pentium3 --extra-cflags='-I/home/qyot27/win32_build/include
 -march=pentium3 -mtune=pentium3 -DPTW32_STATIC_LIB' --extra-
 ldflags=-L/home/qyot27/win32_build/lib --target-os=mingw32 --arch=x86
   libavutil      51. 39.100 / 51. 39.100
   libavcodec     54.  3.100 / 54.  3.100
   libavformat    54.  1.100 / 54.  1.100
   libavdevice    53.  4.100 / 53.  4.100
   libavfilter     2. 62.101 /  2. 62.101
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0.  6.100 /  0.  6.100
   libpostproc    52.  0.100 / 52.  0.100
 [flv @ 00142840] Format flv probed with size=2048 and score=100
 [h264 @ 00148A00] no picture
 [flv @ 00142840] All info found
 rfps: 23.750000 0.011777
     Last message repeated 1 times
 rfps: 23.833333 0.004697
 rfps: 23.916667 0.000836
 rfps: 24.000000 0.000195
 rfps: 24.083333 0.002773
 rfps: 24.166667 0.008572
     Last message repeated 1 times
 rfps: 24.250000 0.017590
     Last message repeated 1 times
 rfps: 47.666667 0.018788
 rfps: 47.750000 0.009456
 rfps: 47.833333 0.003344
 rfps: 47.916667 0.000452
 rfps: 48.000000 0.000779
 rfps: 48.083333 0.004327
 rfps: 48.166667 0.011094
 rfps: 23.976024 0.000049
 Input #0, flv, from '/home/qyot27/sample-5.flv':
   Metadata:
     moovPosition    : 272105568
     avcprofile      : 77
     avclevel        : 31
     aacaot          : 2
     videoframerate  : 24
     audiochannels   : 2
   Duration: 00:21:22.80, start: 0.000000, bitrate: 32 kb/s
     Stream #0:0, 41, 1/1000: Video: h264 (Main), yuv420p, 1280x720 [SAR
 1:1 DAR 16:9], 1001/48000, 23.98 tbr, 1k tbn, 47.95 tbc
     Stream #0:1, 36, 1/1000: Audio: aac, 44100 Hz, stereo, s16
 At least one output file must be specified
 }}}

 The output of a non-working FFmpeg:
 {{{
 ./ffmpeg -v 9 -loglevel 99 -i $HOME/sample-5.flv
 ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Mar  5 2012 14:32:36 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
 --enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
 --extra-cflags='-march=pentium3 -mtune=pentium3'
   libavutil      51. 41.100 / 51. 41.100
   libavcodec     54.  8.100 / 54.  8.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
   libpostproc    52.  0.100 / 52.  0.100
 [flv @ 0x95eeac0] Format flv probed with size=2048 and score=100
 [h264 @ 0x95f4da0] no picture
 Illegal instruction
 }}}

 Only the audio (demuxed using the working build), still errors out with
 newer builds:
 {{{
 ./ffmpeg -v 9 -loglevel 99 -i $HOME/sample-5.aac
 ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Mar  5 2012 14:32:36 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
 --enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
 --extra-cflags='-march=pentium3 -mtune=pentium3'
   libavutil      51. 41.100 / 51. 41.100
   libavcodec     54.  8.100 / 54.  8.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
   libpostproc    52.  0.100 / 52.  0.100
 [aac @ 0xa2f7ac0] Format aac probed with size=2048 and score=51
 Illegal instruction
 }}}

 Remuxing instead to MKV or MP4 produces virtually the same result, with
 'Illegal instruction' after the Format probing message (and the h264 no
 picture message, if the video stream has been retained; otherwise it jumps
 directly to 'Illegal instruction').

 To show that it's not all AAC files, the output of a different file
 (bought from iTunes):
 {{{
 ./ffmpeg -v 9 -loglevel 99 -i /home/qyot27/Music/Songbird\ Music/Depeche\
 Mode\ -\ Never\ Let\ Me\ Down\ Again\ \(Single\ Version\).m4a
 ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Mar  5 2012 14:32:36 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
 --enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
 --extra-cflags='-march=pentium3 -mtune=pentium3'
   libavutil      51. 41.100 / 51. 41.100
   libavcodec     54.  8.100 / 54.  8.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
   libpostproc    52.  0.100 / 52.  0.100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] Format mov,mp4,m4a,3gp,3g2,mj2
 probed with size=2048 and score=100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] ISO: File Type Major Brand: M4A
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] All info found
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/qyot27/Music/Songbird
 Music/Depeche Mode - Never Let Me Down Again (Single Version).m4a':
   Metadata:
     major_brand     : M4A
     minor_version   : 0
     compatible_brands: M4A mp42isom
     creation_time   : 1941-06-18 03:43:01
     title           : Never Let Me Down Again (Single Version)
     artist          : Depeche Mode
     album_artist    : Depeche Mode
     album           : Singles Box 4
     genre           : Rock
     track           : 1/8
     disc            : 2/6
     date            : 2004-12-07T08:00:00Z
     gapless_playback: 0
     copyright       : ℗ 2004 Warner Bros. Records. Manufactured and
 Marketed by Warner Strategic Marketing
     media_type      : 1
   Duration: 00:04:22.03, start: 0.000000, bitrate: 278 kb/s
     Stream #0:0(eng), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100
 Hz, stereo, s16, 259 kb/s
     Metadata:
       creation_time   : 1941-06-18 03:43:01
       handler_name    :
 At least one output file must be specified
 }}}

 or one I'd encoded myself:
 {{{
 ./ffmpeg -v 9 -loglevel 99 -i /home/qyot27/Music/Songbird\ Music/Third\
 Eye\ Blind\ -\ Semi-Charmed\ Life.m4a
 ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Mar  5 2012 14:32:36 with gcc 4.6.1
   configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
 --enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
 --extra-cflags='-march=pentium3 -mtune=pentium3'
   libavutil      51. 41.100 / 51. 41.100
   libavcodec     54.  8.100 / 54.  8.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
   libpostproc    52.  0.100 / 52.  0.100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] Format mov,mp4,m4a,3gp,3g2,mj2
 probed with size=2048 and score=100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] ISO: File Type Major Brand: mp42
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] All info found
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/qyot27/Music/Songbird
 Music/Third Eye Blind - Semi-Charmed Life.m4a':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42isom
     creation_time   : 2008-02-17 22:24:11
     track           : 5/21
     genre           : Soundtrack
     album           : ESPN Presents Jock Rock 2000
     artist          : Third Eye Blind
     title           : Semi-Charmed Life
     date            : 1999
   Duration: 00:04:24.60, start: 0.000000, bitrate: 208 kb/s
     Stream #0:0(eng), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100
 Hz, stereo, s16, 207 kb/s
     Metadata:
       creation_time   : 2008-02-17 22:24:11
       handler_name    :
     Stream #0:1(eng), 0, 1/1000: Data: none (mp4s / 0x7334706D)
     Metadata:
       creation_time   : 2008-02-17 22:24:43
       handler_name    :
     Stream #0:2(eng), 0, 1/1000: Data: none (mp4s / 0x7334706D)
     Metadata:
       creation_time   : 2008-02-17 22:24:43
       handler_name    :
 At least one output file must be specified
 }}}

 I don't know if a sample would be helpful if this actually requires a
 decade-old computer to reproduce the issue, but I've attached one anyway.

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


More information about the FFmpeg-trac mailing list