Opened 7 years ago
Closed 7 years ago
#6764 closed defect (fixed)
encoding mono audio with opus codec segfaults
Reported by: | James Cowgill | Owned by: | |
---|---|---|---|
Priority: | important | Component: | avcodec |
Version: | git-master | Keywords: | opus regression crash |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Attempting to encode any mono audio with the opus codec (any mux) causes ffmpeg to segfault. This is a regression in 3.4 (3.3 works).
gdb --args ./ffmpeg_g -f lavfi -i sine=d=0.1 -strict -2 -c:a opus -f null /dev/null GNU gdb (Debian 7.12-6+b1) 7.12.0.20161007-git Copyright (C) 2016 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". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./ffmpeg_g...done. (gdb) r Starting program: /home/jcowgill/deb-pkg/ffmpeg/upstream/ffmpeg_g -f lavfi -i sine=d=0.1 -strict -2 -c:a opus -f null /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-87950-g53eea3a569 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7 (Debian 7.2.0-11) configuration: --disable-doc --disable-optimizations --enable-debug --disable-autodetect libavutil 55. 79.100 / 55. 79.100 libavcodec 57.108.101 / 57.108.101 libavformat 57. 84.101 / 57. 84.101 libavdevice 57. 11.101 / 57. 11.101 libavfilter 6.108.100 / 6.108.100 libswscale 4. 9.100 / 4. 9.100 libswresample 2. 10.100 / 2. 10.100 [New Thread 0x7ffff6e01700 (LWP 25127)] [New Thread 0x7ffff6600700 (LWP 25128)] [New Thread 0x7ffff5dff700 (LWP 25129)] [New Thread 0x7ffff55fe700 (LWP 25130)] Input #0, lavfi, from 'sine=d=0.1': Duration: N/A, start: 0.000000, bitrate: 705 kb/s Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s Stream mapping: Stream #0:0 -> #0:0 (pcm_s16le (native) -> opus (native)) Press [q] to stop, [?] for help [New Thread 0x7ffff4dfd700 (LWP 25131)] [New Thread 0x7ffff45fc700 (LWP 25132)] [New Thread 0x7ffff3dfb700 (LWP 25133)] [New Thread 0x7ffff35fa700 (LWP 25134)] Output #0, null, to '/dev/null': Metadata: encoder : Lavf57.84.101 Stream #0:0: Audio: opus, 48000 Hz, mono, fltp, 48 kb/s Metadata: encoder : Lavc57.108.101 opus [Parsed_sine_0 @ 0x55555772de20] EOF timestamp not reliable Thread 1 "ffmpeg_g" received signal SIGSEGV, Segmentation fault. 0x000055555652c855 in pvq_band_cost (pvq=0x555557770660, f=0x7ffff7e24040, rc=0x7fffffffd160, band=0, bits=0x7fffffffd15c, lambda=1) at libavcodec/opus_pvq.c:928 928 err_y += (Y[i] - Y_orig[i])*(Y[i] - Y_orig[i]); (gdb) p Y $1 = (float *) 0x0 (gdb) bt #0 0x000055555652c855 in pvq_band_cost (pvq=0x555557770660, f=0x7ffff7e24040, rc=0x7fffffffd160, band=0, bits=0x7fffffffd15c, lambda=1) at libavcodec/opus_pvq.c:928 #1 0x0000555555dc7c42 in bands_dist (s=0x555557742e40, f=0x7ffff7e24040, total_dist=0x7fffffffd70c) at libavcodec/opusenc_psy.c:323 #2 0x0000555555dc7d85 in celt_search_for_intensity (s=0x555557742e40, f=0x7ffff7e24040) at libavcodec/opusenc_psy.c:354 #3 0x0000555555dc82b6 in ff_opus_psy_celt_frame_process (s=0x555557742e40, f=0x7ffff7e24040, index=0) at libavcodec/opusenc_psy.c:408 #4 0x0000555555dc3b3b in celt_encode_frame (s=0x555557742e20, rc=0x5555578cc780, f=0x7ffff7e24040, index=0) at libavcodec/opusenc.c:869 #5 0x0000555555dc421b in opus_encode_frame (avctx=0x555557742940, avpkt=0x55555774c180, frame=0x0, got_packet_ptr=0x7fffffffd9ac) at libavcodec/opusenc.c:997 #6 0x0000555555b297c8 in avcodec_encode_audio2 (avctx=0x555557742940, avpkt=0x55555774c180, frame=0x0, got_packet_ptr=0x7fffffffd9ac) at libavcodec/encode.c:198 #7 0x0000555555b2a312 in do_encode (avctx=0x555557742940, frame=0x0, got_packet=0x7fffffffd9ac) at libavcodec/encode.c:381 #8 0x0000555555b2a4be in avcodec_send_frame (avctx=0x555557742940, frame=0x0) at libavcodec/encode.c:427 #9 0x0000555555636b74 in flush_encoders () at fftools/ffmpeg.c:1931 #10 0x0000555555640d80 in transcode () at fftools/ffmpeg.c:4647 #11 0x0000555555641447 in main (argc=12, argv=0x7fffffffe0f8) at fftools/ffmpeg.c:4830
Change History (4)
comment:1 by , 7 years ago
Keywords: | opus regression crash added |
---|---|
Priority: | normal → important |
Reproduced by developer: | set |
comment:2 by , 7 years ago
comment:3 by , 7 years ago
It still crashes with the commit "6e0723470bea258ceb72ee4c4916cf8f80337f92" which is supposed to fix the issue.
It crashes at ff_pvq_search_exact_avx () with the above commit.
comment:4 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Swiftly fixed by Rostislav in f141b353e60f1081185927a1e74a9ab46cae8bef
Note:
See TracTickets
for help on using tickets.
It still crashes with the commit "6e0723470bea258ceb72ee4c4916cf8f80337f92" which is supposed to fix the issue.
It crashes at ff_pvq_search_exact_avx () with the above commit.