Bug 260690
| Summary: | GPU process crashes don't interrupt waiting Semaphores | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Matt Woodrow <mattwoodrow> |
| Component: | Layout and Rendering | Assignee: | Matt Woodrow <mattwoodrow> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | ap, bfulgham, kkinnunen, simon.fraser, webkit-bug-importer, zalan |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Matt Woodrow
IPC::Semaphore doesn't get interrupted if it's waiting on a signal from a remote process that crashes.
RemoteImageBufferProxy uses a 15 second timeout, per buffer, so we can end up waiting many minutes if we crash during a transaction with lots of layer changes.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Matt Woodrow
For the case where we're waiting on the Semaphore on a background thread (normal painting), we could forward the 'GPU disconnected' message to each RemoteImageBufferProxy and manually notify the Semaphores.
We might need a way to get notifications on a background thread (register with IPC::Connection for a notification from the IPC thread?), which we then use to invalidate Semaphore (by notifying them, and marking them as invalid).
Radar WebKit Bug Importer
<rdar://problem/114591255>
Matt Woodrow
Pull request: https://github.com/WebKit/WebKit/pull/17526
EWS
Committed 268093@main (f2796edab116): <https://commits.webkit.org/268093@main>
Reviewed commits have been landed. Closing PR #17526 and removing active labels.