-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Do not hold lock when IPC call is expected from HAL. C2SurfaceSyncObj is shared lock between framework and HAL. HAL process can have only one thread to handle IPC from HAL to framework. Therefore Holding C2SurfaceSyncObj from HAL during IPC call could trigger deadlock. The exact scenario is as follows. Thread #1:(HAL -> framework IPC) HIDL call onInputBuffersReleased() calls to feedInputBufferIfAvailable(). Since this is using HAL IPC thread, this will block Thread #3. This is waiting for mOuput mutex which is held by Thread #2. Thread #2:(framework) discardBuffer() holds mOutput mutex which blocks Thread #1. But this is waiting for C2SurfaceSyncObj which is held by Thread #3. Thread #3:(HAL) Dtor of C2BufferQueueBlockPoolData is holding C2SurfaceSyncObj, therefore this will block #2. This thread is waiting for HIDL IPC thread to be free in order for 'igbp->cancel()', but HIDL IPC thread is already occupied by Thread #1. Bug: 246707566 Test: atest android.media.decoder.cts.AdaptivePlaybackTest Test: atest android.media.decoder.cts.DecoderTest Change-Id: I6a9540d3b4d03806cd40bb4f89a234a6b77758a9 Merged-In: I6a9540d3b4d03806cd40bb4f89a234a6b77758a9
- Loading branch information
Sungtak Lee
committed
Dec 1, 2022
1 parent
3ee6761
commit bdd0230
Showing
3 changed files
with
17 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters