Opened 10 years ago
Closed 10 years ago
#3985 closed defect (fixed)
Crash when extracting the audio from a video created by mkvmerge
Reported by: | Calmarius | Owned by: | |
---|---|---|---|
Priority: | important | Component: | swresample |
Version: | git-master | Keywords: | crash SIGSEGV regression |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Just cloned and built ffmpeg using the git command line I found in the download area. And compiled on 64 bit Linux.
I merged together some MKV-s into a single one using mkvmerge and tried to extract the sound for further processing. This caused ffmpeg to crash.
The full sample is available on my google drive:
https://drive.google.com/file/d/0B8rc3cKwPxmsS2xBcUlwNC1qcFU/edit?usp=sharing
Although it can be reproduced using a small sample too.
I'm not familiar with the codebase so I haven't tried to fix it my own, and I have a workaround: using the concat demuxer instead of concatenating with mkvmerge.
How to reproduce
$ ffmpeg -i "intermediate_cc.mkv" -af aresample=async=1000 -f wav "intermediate_fx.wav"
Detailed log
$ ffmpeg -v 9 -loglevel 99 -i intermediate_cc.mkv ffmpeg version N-66524-gb7082d9 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 28 2014 15:48:18 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --enable-libx264 --enable-gpl --disable-stripping libavutil 54. 7.101 / 54. 7.101 libavcodec 56. 1.101 / 56. 1.101 libavformat 56. 7.101 / 56. 7.101 libavdevice 56. 1.100 / 56. 1.100 libavfilter 5. 1.102 / 5. 1.102 libswscale 3. 1.100 / 3. 1.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 1.100 / 53. 1.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'. Reading option '-i' ... matched as input file with argument 'intermediate_cc.mkv'. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument 9. Successfully parsed a group of options. Parsing a group of options: input file intermediate_cc.mkv. Successfully parsed a group of options. Opening an input file: intermediate_cc.mkv. [matroska,webm @ 0x20ae620] Format matroska,webm probed with size=2048 and score=100 st:0 removing common factor 1000000 from timebase st:1 removing common factor 1000000 from timebase [matroska,webm @ 0x20ae620] Before avformat_find_stream_info() pos: 5607 bytes read:36029 seeks:2 [matroska,webm @ 0x20ae620] parser not found for codec pcm_s16le, packets or times may be invalid. Last message repeated 1 times [h264 @ 0x20b3b20] no picture [matroska,webm @ 0x20ae620] All info found [matroska,webm @ 0x20ae620] After avformat_find_stream_info() pos: 66152 bytes read:101565 seeks:2 frames:5 Guessed Channel Layout for Input Stream #0.1 : stereo Input #0, matroska,webm, from 'intermediate_cc.mkv': Metadata: creation_time : 2014-09-28 13:24:30 ENCODER : Lavf56.7.101 Duration: 00:09:01.75, start: 0.000000, bitrate: 4401 kb/s Stream #0:0, 4, 1/1000: Video: h264 (High 4:4:4 Predictive), yuv444p, 640x480, 15625/2190197, SAR 1:1 DAR 4:3, 70.09 fps, 70.09 tbr, 1k tbn, 140.17 tbc (default) Metadata: ENCODER : Lavc56.1.101 libx264 Stream #0:1, 1, 1/1000: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s (default) Successfully opened the file. At least one output file must be specified [AVIOContext @ 0x20b6ca0] Statistics: 101565 bytes read, 2 seeks
Valgrind log
$ valgrind ffmpeg -i "intermediate_cc.mkv" -af aresample=async=1000 -f wav "intermediate_fx.wav" ==9969== Memcheck, a memory error detector ==9969== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. ==9969== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info ==9969== Command: ffmpeg -i intermediate_cc.mkv -af aresample=async=1000 -f wav intermediate_fx.wav ==9969== ffmpeg version N-66524-gb7082d9 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 28 2014 15:48:18 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) configuration: --enable-libx264 --enable-gpl --disable-stripping libavutil 54. 7.101 / 54. 7.101 libavcodec 56. 1.101 / 56. 1.101 libavformat 56. 7.101 / 56. 7.101 libavdevice 56. 1.100 / 56. 1.100 libavfilter 5. 1.102 / 5. 1.102 libswscale 3. 1.100 / 3. 1.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 1.100 / 53. 1.100 Guessed Channel Layout for Input Stream #0.1 : stereo Input #0, matroska,webm, from 'intermediate_cc.mkv': Metadata: creation_time : 2014-09-28 13:24:30 ENCODER : Lavf56.7.101 Duration: 00:09:01.75, start: 0.000000, bitrate: 4401 kb/s Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 640x480, SAR 1:1 DAR 4:3, 70.09 fps, 70.09 tbr, 1k tbn, 140.17 tbc (default) Metadata: ENCODER : Lavc56.1.101 libx264 Stream #0:1: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s (default) File 'intermediate_fx.wav' already exists. Overwrite ? [y/N] y Output #0, wav, to 'intermediate_fx.wav': Metadata: ISFT : Lavf56.7.101 Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s (default) Metadata: encoder : Lavc56.1.101 pcm_s16le Stream mapping: Stream #0:1 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native)) Press [q] to stop, [?] for help ==9969== Invalid write of size 8 ==9969== at 0xD65CCA: ??? (in /usr/local/bin/ffmpeg) ==9969== by 0xD61EC8: swri_audio_convert (audioconvert.c:207) ==9969== by 0xD5F0AB: swr_convert_internal.part.4 (swresample.c:633) ==9969== by 0xD5FE61: swr_convert (swresample.c:526) ==9969== by 0xD605BB: swr_next_pts (swresample.c:753) ==9969== by 0x5095B2: filter_frame (af_aresample.c:199) ==9969== by 0x4947A3: ff_filter_frame_framed (avfilter.c:1081) ==9969== by 0x496B7B: ff_filter_frame (avfilter.c:1161) ==9969== by 0x49A9A1: request_frame (buffersrc.c:499) ==9969== by 0x49ACE5: av_buffersrc_add_frame_internal (buffersrc.c:181) ==9969== by 0x49AE1D: av_buffersrc_add_frame_flags (buffersrc.c:106) ==9969== by 0x483417: process_input_packet (ffmpeg.c:1861) ==9969== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==9969== ==9969== ==9969== Process terminating with default action of signal 11 (SIGSEGV) ==9969== Access not within mapped region at address 0x8 ==9969== at 0xD65CCA: ??? (in /usr/local/bin/ffmpeg) ==9969== by 0xD61EC8: swri_audio_convert (audioconvert.c:207) ==9969== by 0xD5F0AB: swr_convert_internal.part.4 (swresample.c:633) ==9969== by 0xD5FE61: swr_convert (swresample.c:526) ==9969== by 0xD605BB: swr_next_pts (swresample.c:753) ==9969== by 0x5095B2: filter_frame (af_aresample.c:199) ==9969== by 0x4947A3: ff_filter_frame_framed (avfilter.c:1081) ==9969== by 0x496B7B: ff_filter_frame (avfilter.c:1161) ==9969== by 0x49A9A1: request_frame (buffersrc.c:499) ==9969== by 0x49ACE5: av_buffersrc_add_frame_internal (buffersrc.c:181) ==9969== by 0x49AE1D: av_buffersrc_add_frame_flags (buffersrc.c:106) ==9969== by 0x483417: process_input_packet (ffmpeg.c:1861) ==9969== If you believe this happened as a result of a stack ==9969== overflow in your program's main thread (unlikely but ==9969== possible), you can try to increase the size of the ==9969== main thread stack using the --main-stacksize= flag. ==9969== The main thread stack size used in this run was 8388608. ==9969== ==9969== HEAP SUMMARY: ==9969== in use at exit: 3,075,780 bytes in 431 blocks ==9969== total heap usage: 3,505 allocs, 3,074 frees, 19,465,091 bytes allocated ==9969== ==9969== LEAK SUMMARY: ==9969== definitely lost: 0 bytes in 0 blocks ==9969== indirectly lost: 0 bytes in 0 blocks ==9969== possibly lost: 816 bytes in 3 blocks ==9969== still reachable: 3,074,964 bytes in 428 blocks ==9969== suppressed: 0 bytes in 0 blocks ==9969== Rerun with --leak-check=full to see details of leaked memory ==9969== ==9969== For counts of detected and suppressed errors, rerun with: -v ==9969== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 2 from 2)
Attachments (1)
Change History (3)
by , 10 years ago
Attachment: | intermediate_cc_cut.mkv added |
---|
comment:1 by , 10 years ago
Component: | ffmpeg → swresample |
---|---|
Keywords: | crash SIGSEGV regression added |
Priority: | normal → important |
Reproduced by developer: | set |
Status: | new → open |
comment:2 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Regression since ea6331b2
Workaround is to specify
-cpuflags -sse2