Adjust valgrind run to fail tests if valgrind report errors.
Merge request reports
Activity
This expose the following valgrind issues with the test code:
encdec-audio.log
---- Testing encode/decode pipeline for audio ... ---- + 1 channel 8000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Speex, 128 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 1 channel 8000 Hz Speex, 128 frame buffer (interleave) ... ---- + 1 channel 8000 Hz Flac, 128 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 2 channel 8000 Hz Speex, 128 frame buffer (non-interleave) ... ---- + 2 channel 8000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 2 channel 8000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Speex, 128 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Flac, 128 frame buffer (interleave) ... ---- + 6 channel 8000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 6 channel 8000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 6 channel 8000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 6 channel 8000 Hz Flac, 128 frame buffer (interleave) ... ---- + 16 channel 8000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 16 channel 8000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Speex, 128 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Speex, 128 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Flac, 128 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Speex, 128 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Speex, 128 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Flac, 128 frame buffer (interleave) ... ---- + 6 channel 48000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 6 channel 48000 Hz Flac, 128 frame buffer (non-interleave) ... ---- + 6 channel 48000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 6 channel 48000 Hz Flac, 128 frame buffer (interleave) ... ---- + 16 channel 48000 Hz Vorbis, 128 frame buffer (non-interleave) ... ---- + 16 channel 48000 Hz Vorbis, 128 frame buffer (interleave) ... ---- + 1 channel 8000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Speex, 1024 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Flac, 1024 frame buffer (non-interleave) ... ---- + 1 channel 8000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 1 channel 8000 Hz Speex, 1024 frame buffer (interleave) ... ---- + 1 channel 8000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 2 channel 8000 Hz Speex, 1024 frame buffer (non-interleave) ... ---- + 2 channel 8000 Hz Flac, 1024 frame buffer (non-interleave) ... ==903866== Invalid read of size 4 ==903866== at 0x4860449: fs_flac_write_callback (flac.c:186) ==903866== by 0x4BC7425: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4BCA8A1: FLAC__stream_decoder_process_single (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x48607EF: fs_flac_decode (flac.c:330) ==903866== by 0x1098BC: encoded (encdec-audio.c:115) ==903866== by 0x48605F7: fs_flac_enc_write_callback (flac.c:413) ==903866== by 0x4BD0FD0: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4BD34C3: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4BD4039: FLAC__stream_encoder_finish (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x48602E8: fs_flac_flush (flac.c:787) ==903866== by 0x109B10: fs_encdec_test.isra.0 (encdec-audio.c:233) ==903866== by 0x109592: main (encdec-audio.c:345) ==903866== Address 0x4df48e8 is 0 bytes after a block of size 8,936 alloc'd ==903866== at 0x484ABA3: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==903866== by 0x4BC8084: FLAC__stream_decoder_new (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x486084E: fs_flac_decode_header (flac.c:243) ==903866== by 0x486084E: fs_flac_decode (flac.c:284) ==903866== by 0x1098BC: encoded (encdec-audio.c:115) ==903866== by 0x4860718: fs_flac_enc_write_callback (flac.c:408) ==903866== by 0x4BD0FD0: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4BD24FB: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4BD285E: FLAC__stream_encoder_init_stream (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903866== by 0x4860D30: fs_flac_enc_headers.isra.0 (flac.c:603) ==903866== by 0x4860EB9: fs_flac_encode_f (flac.c:650) ==903866== by 0x109AF0: fs_encdec_test.isra.0 (encdec-audio.c:229) ==903866== by 0x109592: main (encdec-audio.c:345) ==903866== ---- + 2 channel 8000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Speex, 1024 frame buffer (interleave) ... ---- + 2 channel 8000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 6 channel 8000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 6 channel 8000 Hz Flac, 1024 frame buffer (non-interleave) ... ---- + 6 channel 8000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 6 channel 8000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 16 channel 8000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 16 channel 8000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Speex, 1024 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Flac, 1024 frame buffer (non-interleave) ... ---- + 1 channel 48000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Speex, 1024 frame buffer (interleave) ... ---- + 1 channel 48000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Speex, 1024 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Flac, 1024 frame buffer (non-interleave) ... ---- + 2 channel 48000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Speex, 1024 frame buffer (interleave) ... ---- + 2 channel 48000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 6 channel 48000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 6 channel 48000 Hz Flac, 1024 frame buffer (non-interleave) ... ---- + 6 channel 48000 Hz Vorbis, 1024 frame buffer (interleave) ... ---- + 6 channel 48000 Hz Flac, 1024 frame buffer (interleave) ... ---- + 16 channel 48000 Hz Vorbis, 1024 frame buffer (non-interleave) ... ---- + 16 channel 48000 Hz Vorbis, 1024 frame buffer (interleave) ... ==903866== 5,696 bytes in 2 blocks are definitely lost in loss record 1 of 2 ==903866== at 0x4843818: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==903866== by 0x4AA4356: vorbis_encode_residue_setup (vorbisenc.c:463) ==903866== by 0x4AA4356: vorbis_encode_map_n_res_setup (vorbisenc.c:612) ==903866== by 0x4AA4356: vorbis_encode_setup_init (vorbisenc.c:828) ==903866== by 0x4AA4F5D: vorbis_encode_init_vbr (vorbisenc.c:941) ==903866== by 0x485FB97: fs_vorbis_enc_init (vorbis.c:389) ==903866== by 0x485FB97: fs_vorbis_init (vorbis.c:442) ==903866== by 0x485D6A5: fish_sound_set_format (fishsound.c:73) ==903866== by 0x485D7E9: fish_sound_new (fishsound.c:131) ==903866== by 0x1099B8: fs_encdec_new (encdec-audio.c:148) ==903866== by 0x1099B8: fs_encdec_test.isra.0 (encdec-audio.c:218) ==903866== by 0x10940B: main (encdec-audio.c:330) ==903866== ==903866== 5,696 bytes in 2 blocks are definitely lost in loss record 2 of 2 ==903866== at 0x4843818: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==903866== by 0x4AA4356: vorbis_encode_residue_setup (vorbisenc.c:463) ==903866== by 0x4AA4356: vorbis_encode_map_n_res_setup (vorbisenc.c:612) ==903866== by 0x4AA4356: vorbis_encode_setup_init (vorbisenc.c:828) ==903866== by 0x4AA4F5D: vorbis_encode_init_vbr (vorbisenc.c:941) ==903866== by 0x485FB97: fs_vorbis_enc_init (vorbis.c:389) ==903866== by 0x485FB97: fs_vorbis_init (vorbis.c:442) ==903866== by 0x485D6A5: fish_sound_set_format (fishsound.c:73) ==903866== by 0x485D7E9: fish_sound_new (fishsound.c:131) ==903866== by 0x1099B8: fs_encdec_new (encdec-audio.c:148) ==903866== by 0x1099B8: fs_encdec_test.isra.0 (encdec-audio.c:218) ==903866== by 0x1094D8: main (encdec-audio.c:355) ==903866== PASS encdec-audio (exit status: 0)
encdec-comments.log
---- Testing encode/decode pipeline for comments: VORBIS ... ---- + Adding ARTIST1 byname ... ---- + Adding COPYRIGHT byname ... ---- + Adding LICENSE from local storage ... ---- + Adding ARTIST2 byname ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- Testing encode/decode pipeline for comments: SPEEX ... ---- + Adding ARTIST1 byname ... ---- + Adding COPYRIGHT byname ... ---- + Adding LICENSE from local storage ... ---- + Adding ARTIST2 byname ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- + Retrieving first (expect ARTIST1) ... ---- + Retrieving next (expect COPYRIGHT) ... ---- + Retrieving next (expect LICENSE) ... ---- + Retrieving first ARTIST using wierd caps (expect ARTIST1) ... ---- + Retrieving next ARTIST (expect ARTIST2) ... ---- Testing encode/decode pipeline for comments: FLAC ... ---- + Adding ARTIST1 byname ... ---- + Adding COPYRIGHT byname ... ---- + Adding LICENSE from local storage ... ---- + Adding ARTIST2 byname ... ==903818== 51 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==903818== at 0x4843818: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==903818== by 0x48608A3: fs_flac_decode (flac.c:288) ==903818== by 0x10963C: encoded (encdec-comments.c:131) ==903818== by 0x4860718: fs_flac_enc_write_callback (flac.c:408) ==903818== by 0x4BD0FD0: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903818== by 0x4BD24FB: ??? (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903818== by 0x4BD285E: FLAC__stream_encoder_init_stream (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.1.0) ==903818== by 0x4860D30: fs_flac_enc_headers.isra.0 (flac.c:603) ==903818== by 0x4860FD7: fs_flac_encode_f_ilv (flac.c:690) ==903818== by 0x109839: fs_encdec_comments_test.constprop.0.isra.0 (encdec-comments.c:217) ==903818== by 0x1091FC: main (encdec-comments.c:242) ==903818== PASS encdec-comments (exit status: 0)
I do not know the code base enough to know how to solve this.
The invalid read go away with the following patch, but I am not sure if it correct.
diff --git a/src/libfishsound/flac.c b/src/libfishsound/flac.c index e095815..ead05c1 100644 --- a/src/libfishsound/flac.c +++ b/src/libfishsound/flac.c @@ -172,7 +172,6 @@ fs_flac_write_callback(const FLAC__StreamDecoder *decoder, dfi (fsound, (float **)retpcm, blocksize, fsound->user_data); } else { FishSoundDecoded_Float df; - FLAC__int32 * s = (FLAC__int32 *)buffer; /* de-interleave source */ float *d; /* de-interleave dest */ for (j = 0; j < channels; j++) { @@ -183,7 +182,7 @@ fs_flac_write_callback(const FLAC__StreamDecoder *decoder, for (i = 0; i < blocksize; i++) for (j = 0; j < channels; j++) { d = fi->pcm_out[j]; - d[i] = s[i*channels + j] * norm; + d[i] = buffer[j][i] * norm; } df = (FishSoundDecoded_Float)fsound->callback.decoded_float; df (fsound, fi->pcm_out, blocksize, fsound->user_data);
Please register or sign in to reply