#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 _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac