DescriptionElimiteted race condition in the AudioMixer.
The mixer allocates an audio frame for each added data source. This
audio frame was deallocated when a source was removed from the
mixer. Source removal could happen during the mixing, and the existing
locking scheme (and the Clang thread checker) was not sufficient to
prevent a data race.
After this change, the mixer doesn't release its lock until it is
finished with the sources' Audio frames. Since multi-threaded access to
the mixer only happens when a source is added or removed, we believe
that this change wouldn't have any noticeable performance impact.
NOTRY=True
BUG=webrtc:6346
Committed: https://crrev.com/1655e45d85be0ecbf172115031bdbbc88a65c1b2
Cr-Commit-Position: refs/heads/master@{#14744}
Patch Set 1 #Patch Set 2 : Removed previous change, now holding lock a little longer. #
Dependent Patchsets: Messages
Total messages: 12 (7 generated)
|