Skip to content
Snippets Groups Projects

Adjust valgrind run to fail tests if valgrind report errors.

Open Petter Reinholdtsen requested to merge fatal-valgrind-run into master

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • 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
Loading