The bug is sill there somewhere: instead of segfaulting, the following now makes SoX eat up the CPU, without producing a spectrogram:
sox -c 1 -b 16 -r 1000 -n file.wav synth 1 sin 440 gain -3 sox file.wav -n spectrogram sox file.wav -n spectrogram -x 1000 sox file.wav -n spectrogram -x 1001 Jan > There seems to be a bug in the spectrogram effect, > also present in earlier releases. > > $ sox -c 1 -b 16 -r 1000 -n file.wav synth 1 sin 440 gain -3 > $ sox file.wav -n spectrogram > $ sox file.wav -n spectrogram -x 1000 > $ sox file.wav -n spectrogram -x 1001 > Segmentation fault (core dumped) > $ sox file.wav -n spectrogram -X 1000 > $ sox file.wav -n spectrogram -X 1001 > Segmentation fault (core dumped) > > It seems that if the -x size of the spectrogram is bigger > than the number of actual samples (1000 in the example), > or samples/second, SoX segfaults instead of rejecting that option > (say, limiting the number to the number of samples available). > > This is surely done in the start() function of spectrogram.c > but instead of trying to decipher it, I will leave to the devs. > > Below please see the output of sox -V on the good and bad case, > here is an illustrative diff of the two: > > --- /tmp/good Thu Jan 1 21:18:41 2015 > +++ /tmp/bad Thu Jan 1 21:18:36 2015 > @@ -33,15 +33,13 @@ Precision : 16-bit > Duration : 00:00:01.00 = 1000 samples ~ 75 CDDA sectors > > sox DBUG effects: sox_add_effect: extending effects table, new size = 8 > -sox DBUG spectrogram: duration=1 x_size=1000 pixels_per_sec=1000 > dft_size=1024 > +sox DBUG spectrogram: duration=1 x_size=1001 pixels_per_sec=1001 > dft_size=1024 > sox DBUG spectrogram: window_density=0.5 > -sox DBUG spectrogram: step_size=1 block_steps=1 > +sox INFO spectrogram: actual pixels/s = -inf > +sox DBUG spectrogram: step_size=-2147483648 block_steps=0 > sox INFO sox: effects chain: input 1000Hz 1 channels (multi) 16 > bits 00:00:01.00 > sox INFO sox: effects chain: spectrogram 1000Hz 1 channels 16 > bits 00:00:01.00 > sox INFO sox: effects chain: output 1000Hz 1 channels (multi) 16 > bits 00:00:01.00 > -sox DBUG sox: start-up time = 0.002191 > -sox DBUG spectrogram: cols=489 left=0 end=24 > -sox INFO spectrogram: PNG truncated at 1 seconds > -sox INFO spectrogram: PNG truncated at 1 seconds > -sox DBUG spectrogram: flushed cols=1000 left=1 end=-512 > -sox DBUG spectrogram: signal-max=-4.11314 > +sox DBUG sox: start-up time = 0.005625 > +sox DBUG spectrogram: cols=0 left=1073741312 end=1024 > +Segmentation fault (core dumped) > > > I am running this on OpanBSD/amd64 > but that doesn't seem to be relevant. > > Jan > > > GOOD: > > sox: SoX v14.4.2 > time: Jan 1 2015 20:51:29 > uname: OpenBSD lenovo.stare.cz 5.6 GENERIC.MP#735 amd64 > compiler: gcc 4.2.1 20070719 > arch: 1288 48 88 L > sox INFO formats: detected file format type `wav' > sox DBUG wav: Searching for 66 6d 74 20 > sox DBUG wav: WAV Chunk fmt > sox DBUG wav: Searching for 64 61 74 61 > sox DBUG wav: WAV Chunk data > sox DBUG wav: Reading Wave file: Microsoft PCM format, 1 channel, 1000 > samp/sec > sox DBUG wav: 2000 byte/sec, 2 block align, 16 bits/samp, 2000 data > bytes > sox DBUG wav: 1000 Samps/chans > sox DBUG wav: Searching for 4c 49 53 54 > > Input File : 'file.wav' > Channels : 1 > Sample Rate : 1000 > Precision : 16-bit > Duration : 00:00:01.00 = 1000 samples ~ 75 CDDA sectors > File Size : 2.04k > Bit Rate : 16.4k > Sample Encoding: 16-bit Signed Integer PCM > Endian Type : little > Reverse Nibbles: no > Reverse Bits : no > > > Output File : '' (null) > Channels : 1 > Sample Rate : 1000 > Precision : 16-bit > Duration : 00:00:01.00 = 1000 samples ~ 75 CDDA sectors > > sox DBUG effects: sox_add_effect: extending effects table, new size = 8 > sox DBUG spectrogram: duration=1 x_size=1000 pixels_per_sec=1000 dft_size=1024 > sox DBUG spectrogram: window_density=0.5 > sox DBUG spectrogram: step_size=1 block_steps=1 > sox INFO sox: effects chain: input 1000Hz 1 channels (multi) 16 bits > 00:00:01.00 > sox INFO sox: effects chain: spectrogram 1000Hz 1 channels 16 > bits 00:00:01.00 > sox INFO sox: effects chain: output 1000Hz 1 channels (multi) 16 bits > 00:00:01.00 > sox DBUG sox: start-up time = 0.002191 > sox DBUG spectrogram: cols=489 left=0 end=24 > sox INFO spectrogram: PNG truncated at 1 seconds > sox INFO spectrogram: PNG truncated at 1 seconds > sox DBUG spectrogram: flushed cols=1000 left=1 end=-512 > sox DBUG spectrogram: signal-max=-4.11314 > > > > BAD: > > sox: SoX v14.4.2 > time: Jan 1 2015 20:51:29 > uname: OpenBSD lenovo.stare.cz 5.6 GENERIC.MP#735 amd64 > compiler: gcc 4.2.1 20070719 > arch: 1288 48 88 L > sox INFO formats: detected file format type `wav' > sox DBUG wav: Searching for 66 6d 74 20 > sox DBUG wav: WAV Chunk fmt > sox DBUG wav: Searching for 64 61 74 61 > sox DBUG wav: WAV Chunk data > sox DBUG wav: Reading Wave file: Microsoft PCM format, 1 channel, 1000 > samp/sec > sox DBUG wav: 2000 byte/sec, 2 block align, 16 bits/samp, 2000 data > bytes > sox DBUG wav: 1000 Samps/chans > sox DBUG wav: Searching for 4c 49 53 54 > > Input File : 'file.wav' > Channels : 1 > Sample Rate : 1000 > Precision : 16-bit > Duration : 00:00:01.00 = 1000 samples ~ 75 CDDA sectors > File Size : 2.04k > Bit Rate : 16.4k > Sample Encoding: 16-bit Signed Integer PCM > Endian Type : little > Reverse Nibbles: no > Reverse Bits : no > > > Output File : '' (null) > Channels : 1 > Sample Rate : 1000 > Precision : 16-bit > Duration : 00:00:01.00 = 1000 samples ~ 75 CDDA sectors > > sox DBUG effects: sox_add_effect: extending effects table, new size = 8 > sox DBUG spectrogram: duration=1 x_size=1001 pixels_per_sec=1001 dft_size=1024 > sox DBUG spectrogram: window_density=0.5 > sox INFO spectrogram: actual pixels/s = -inf > sox DBUG spectrogram: step_size=-2147483648 block_steps=0 > sox INFO sox: effects chain: input 1000Hz 1 channels (multi) 16 bits > 00:00:01.00 > sox INFO sox: effects chain: spectrogram 1000Hz 1 channels 16 > bits 00:00:01.00 > sox INFO sox: effects chain: output 1000Hz 1 channels (multi) 16 bits > 00:00:01.00 > sox DBUG sox: start-up time = 0.005625 > sox DBUG spectrogram: cols=0 left=1073741312 end=1024 > Segmentation fault (core dumped) > _______________________________________________ SoX-devel mailing list SoX-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sox-devel