Ticket #324 (closed defect: fixed)
floating point exception while generation of 1s silence
| Reported by: | Schweinebacke | Owned by: | michael |
|---|---|---|---|
| Priority: | critical | Component: | FFmpeg |
| Version: | git-master | Keywords: | fpe regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | yes |
Description
ffmpeg -f s16le -i /dev/zero -ab 224000 -ar 48000 -ac 2 -t 1 test.ac3
or
ffmpeg -f s16le -i /dev/zero -ab 224000 -ar 48000 -ac 2 -t 1 test.wav
results in a floating point exception:
ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers
built on Jun 23 2011 09:35:04 with gcc 4.5.0 20100604 [gcc-4_5-branch revision 160292]
configuration: --shlibdir=/usr/lib64 --prefix=/usr --mandir=/usr/share/man --libdir=/usr/lib64 --enable-shared --disable-static --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libxvid --enable-postproc --enable-gpl --enable-x11grab --extra-cflags='-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -fPIC -I/usr/include/gsm' --enable-debug --disable-stripping --enable-libgsm --enable-libschroedinger --enable-libdirac --enable-avfilter --enable-libvpx --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libdc1394 --enable-pthreads --enable-librtmp
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libavdevice 53. 1. 1 / 53. 1. 1
libavfilter 2. 23. 0 / 2. 23. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Ignoring attempt to set invalid timebase for st:0
[s16le @ 0x635660] Estimating duration from bitrate, this may be inaccurate
Input #0, s16le, from '/dev/zero':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0.0: Audio: pcm_s16le, 1 channels, s16
[ac3 @ 0x62f220] channel_layout not specified
[ac3 @ 0x62f220] No channel layout specified. The encoder will guess the layout, but it might be incorrect.
Output #0, ac3, to 'test.ac3':
Metadata:
encoder : Lavf53.4.0
Stream #0.0: Audio: ac3, 48000 Hz, stereo, s16, 224 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
floating point exception
Change History
comment:1 Changed 23 months ago by cehoyos
- Keywords fpe regression added; floating point exception removed
- Status changed from new to open
- Version changed from 0.8 to git-master
- Reproduced by developer set
comment:3 Changed 22 months ago by cehoyos
Regression since:
commit d7ee44024c96ebdbcd718885a77e9a07779df54c
Author: Anton Khirnov <anton@…>
Date: Wed Jun 15 08:00:03 2011 +0200
ffmpeg: don't abuse a global for passing samplerate from input to output
It's broken with multiple files or audio streams.
This removes the default samplerate of 44100 for raw input, hence all
the FATE changes.
comment:4 Changed 19 months ago by saste
- Analyzed by developer set
- Status changed from open to closed
- Resolution set to fixed
Fixed in commit:
commit aa638b4600e1fa7a1b64323b8228c459af644a47
Author: Stefano Sabatini <stefasab@gmail.com>
Date: Thu Oct 27 01:38:21 2011 +0200
rawdec: add check on sample_rate
Prevent error condition in case sample_rate is unset or set to a negative
value. In particular, fix divide-by-zero error occurring in ffmpeg due to
sample_rate set to 0 in output_packet(), in code:
ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) /
ist->st->codec->sample_rate;
Fix trac ticket #324.
The user is forced to specify a samplerate, the default value of 0 is rejected, and the FPE is thus avoided.



Workaround is to use
(gdb) r -f s16le -i /dev/zero -ar 48000 -t 1 out.wav Starting program: /home/cehoyos/Projects/FFmpeg/ffmpeg_g -f s16le -i /dev/zero -ar 48000 -t 1 out.wav [Thread debugging using libthread_db enabled] ffmpeg version N-31094-g8c0cbb0, Copyright (c) 2000-2011 the FFmpeg developers built on Jun 30 2011 08:31:56 with gcc 4.5.3 configuration: --cc='/usr/local/gcc-4.5.3/bin/gcc -m32' libavutil 51. 10. 0 / 51. 10. 0 libavcodec 53. 7. 0 / 53. 7. 0 libavformat 53. 4. 0 / 53. 4. 0 libavdevice 53. 2. 0 / 53. 2. 0 libavfilter 2. 24. 0 / 2. 24. 0 libswscale 2. 0. 0 / 2. 0. 0 Ignoring attempt to set invalid timebase for st:0 [s16le @ 0x8c69340] Estimating duration from bitrate, this may be inaccurate Input #0, s16le, from '/dev/zero': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0.0: Audio: pcm_s16le, 1 channels, s16 Output #0, wav, to 'out.wav': Metadata: encoder : Lavf53.4.0 Stream #0.0: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop, [?] for help Program received signal SIGFPE, Arithmetic exception. 0x085bc9f3 in __udivmoddi4 (rp=0x0, d=0, n=1024000000) at ../../.././libgcc/../gcc/libgcc2.c:895 895 ../../.././libgcc/../gcc/libgcc2.c: No such file or directory. in ../../.././libgcc/../gcc/libgcc2.c (gdb) bt #0 0x085bc9f3 in __udivmoddi4 (rp=0x0, d=0, n=1024000000) at ../../.././libgcc/../gcc/libgcc2.c:895 #1 __divdi3 (rp=0x0, d=0, n=1024000000) at ../../.././libgcc/../gcc/libgcc2.c:1093 #2 0x08050480 in output_packet (ist=0x8c74058, ist_index=0, ost_table=0x8c76cc0, nb_ostreams=1, pkt=0xffffcda0) at ffmpeg.c:1599 #3 0x08053a0f in transcode (nb_output_files=1, input_files=0x8c63008, nb_input_files=1, stream_maps=0x0, nb_stream_maps=0, output_files=0x870a9c0) at ffmpeg.c:2780 #4 0x08058c85 in main (argc=<value optimized out>, argv=<value optimized out>) at ffmpeg.c:4578