diff options
author | Shreesh Adiga <16567adigashreesh@gmail.com> | 2021-07-11 18:13:04 +0530 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2021-07-13 15:16:59 +0000 |
commit | 8ace8e879050fbfc7e11c68541dbadd6ce8b56a9 (patch) | |
tree | d15f2cc99e52f49cdbf35523d1f21e1050c3d680 /demux | |
parent | be81470f5464abcb31095f6c86380b354a16ba2d (diff) | |
download | mpv-8ace8e879050fbfc7e11c68541dbadd6ce8b56a9.tar.bz2 mpv-8ace8e879050fbfc7e11c68541dbadd6ce8b56a9.tar.xz |
demux: acquire lock before calling update_bytes_read
in->byte_level_seeks field is written and modified inside
update_bytes_read at the same time when demux_get_reader_state
is executing, which locks the demux thread mutex. This results
in a data race, reported by Thread Sanitizer when playing mp3 file
of sufficient long length.
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/demux/demux.c b/demux/demux.c index 650078d068..fdec805d15 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -4137,10 +4137,10 @@ static void update_cache(struct demux_internal *in) stream_control(stream, STREAM_CTRL_GET_METADATA, &stream_metadata); } - update_bytes_read(in); - pthread_mutex_lock(&in->lock); + update_bytes_read(in); + if (do_update) in->stream_size = stream_size; if (stream_metadata) { |