Audio: fix ~refbase() crash caused by race condition
[cause]:When ~SuspendedEffectDesc() is called, mSuspendedEffects race condition cause strong refcount of SuspendedEffectDesc obj is 1, which causing a fatal error.
[example]:
1. thread1:
AudioFlinger::setEffectSuspended
|-> ThreadBase::setEffectSuspended_l
|-> EffectChain::setEffectSuspended_l
|-> ~SuspendedEffectDesc
|-> ~RefBase
2. thread2:
EffectChain::EffectCallback::onEffectDisable
|-> EffectCallback::checkSuspendOnEffectEnabled
|-> EffectChain::checkSuspendOnEffectEnabled_l
|-> incStrong
[solution]:add mutex for mSuspendedEffects
Flag: EXEMPT bugfix
Bug: 408017789
Test: atest CtsMediaAudioTestCases
Change-Id: I344747a4f2cd5ea7620ce74f11625926a23f178a
Signed-off-by:
zhouchenchang <zhouchenchang@xiaomi.com>
Loading
Please register or sign in to comment