Bug 302068
| Summary: | [CoordinatedGraphics] Fix deadlock when media thread is trying to push a buffer while main thread is flushing layers | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Carlos Garcia Campos <cgarcia> |
| Component: | Platform | Assignee: | Carlos Garcia Campos <cgarcia> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bugs-noreply, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Carlos Garcia Campos
During the layer flush the CoordinatedPlatformLayer lock is held and CoordinatedPlatformLayerBufferProxy::setDisplayBuffer needs to take the lock to push the new buffer too. CoordinatedPlatformLayerBufferProxy::consumePendingBufferIfNeeded(), called during layer flush from main thread waits on the proxy lock that is held by CoordinatedPlatformLayerBufferProxy::setDisplayBuffer which is waiting for the CoordinatedPlatformLayer lock. We need to release the proxy lock before taking the layer's one.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Carlos Garcia Campos
Pull request: https://github.com/WebKit/WebKit/pull/53512
EWS
Committed 302647@main (c09f42b5726d): <https://commits.webkit.org/302647@main>
Reviewed commits have been landed. Closing PR #53512 and removing active labels.
Radar WebKit Bug Importer
<rdar://problem/164164515>