On 4/8/2019 10:53 AM, Jeremy Dorfman via ffmpeg-devel wrote: > Judging by the code, I think flush_put_bits only pads out to a byte > boundary rather than the end of the buffer. By my read it will run the body > of the while loop 3 times in this case, for bit_left = 8, 16, 24, so only 3 > bytes are filled in header. > > I'd expect this to only affect the actual output in uncommon cases. It > requires the reuse of a stack with non-zero values at the location of > uint8_t header[4]. In the common case of running FFmpeg, it looks like this > is called from the main thread so it should typically be zeroed by the OS. > MemorySanitizer is tagging that region of the stack as uninitialized, so I > don't think this is a false positive -- it doesn't appear to ever be > intentionally written. > > Thanks, > -Jeremy
Alright, thanks for the explanation. Pushed. > > On Mon, Apr 8, 2019 at 9:33 AM James Almer <jamr...@gmail.com> wrote: > >> On 4/8/2019 9:14 AM, Jeremy Dorfman via ffmpeg-devel wrote: >>> Otherwise, AV1 encodes with FFmpeg trigger use-of-uninitialized-value >>> warnings under MemorySanitizer, and the output buffer potentially >>> changes from run to run. >>> --- >>> libavformat/av1.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/libavformat/av1.c b/libavformat/av1.c >>> index a0aad436a6..5fde8df97e 100644 >>> --- a/libavformat/av1.c >>> +++ b/libavformat/av1.c >>> @@ -372,6 +372,7 @@ int ff_isom_write_av1c(AVIOContext *pb, const >> uint8_t *buf, int size) >>> put_bits(&pbc, 1, seq_params.chroma_subsampling_x); >>> put_bits(&pbc, 1, seq_params.chroma_subsampling_y); >>> put_bits(&pbc, 2, seq_params.chroma_sample_position); >>> + put_bits(&pbc, 8, 0); // padding >> >> Shouldn't flush_put_bits() below do this? The doxy says "Pad the end of >> the output stream with zeros". >> In any case, i just tried remuxing a single file several times, and in >> all cases the hash of the output file was the same, so it could be a >> false positive from MemorySanitizer. >> >> Patch is fine either way, but i'd like to know why you're getting those >> warnings. >> >>> flush_put_bits(&pbc); >>> >>> avio_write(pb, header, sizeof(header)); >>> >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".