Closed
Bug 1494528
Opened 8 years ago
Closed 8 years ago
GPU process start failure is not handled correctly when WebRender is enabled
Categories
(Core :: Graphics, defect)
Core
Graphics
Tracking
()
RESOLVED
FIXED
mozilla64
| Tracking | Status | |
|---|---|---|
| firefox64 | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 1 obsolete file)
|
1.60 KB,
patch
|
aosmond
:
review+
|
Details | Diff | Splinter Review |
With the following crash log, when gpu loanch is failed, it seemed to try to allocate WebRender in chrome process. But it is disabled and an unexpected STR.
https://crash-stats.mozilla.com/report/index/cc18ed3b-af9b-48c5-8d10-24ba30180924
| Assignee | ||
Updated•8 years ago
|
Assignee: nobody → sotaro.ikeda.g
| Assignee | ||
Updated•8 years ago
|
Summary: GPU process start failure is not handled correctly when WebRender is enabled. → GPU process start failure is not handled correctly
| Assignee | ||
Updated•8 years ago
|
Component: Graphics: WebRender → Graphics
| Comment hidden (obsolete) |
| Assignee | ||
Updated•8 years ago
|
Attachment #9012480 -
Attachment is obsolete: true
| Assignee | ||
Updated•8 years ago
|
Summary: GPU process start failure is not handled correctly → GPU process start failure is not handled correctly when WebRender is enabled
| Assignee | ||
Comment 2•8 years ago
|
||
When connection to GPU process is failed, GPUProcessManager::DisableGPUProcess() is called and it disables GPU process usage. And gfxPlatform::NotifyGPUProcessDisabled() is called in the DisableGPUProcess(). The NotifyGPUProcessDisabled() disables WebRender if it is enabled.
https://dxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxPlatform.cpp#3185
| Assignee | ||
Comment 3•8 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #0)
> With the following crash log, when gpu loanch is failed, it seemed to try to
> allocate WebRender in chrome process. But it is disabled and an unexpected
> STR.
>
> https://crash-stats.mozilla.com/report/index/cc18ed3b-af9b-48c5-8d10-24ba30180924
The crash suggests that GPU process is disabled, but it try to allocate WebRenderAPI in parent process. But in parent process, RenderThread is not initialized. Then it causes crash.
One possibility of causing the crash is that GPUProcessManager::EnsureGPUReady() is not called yet when nsBaseWidget::CreateCompositorSession() is called, and the EnsureGPUReady() is called in GPUProcessManager::CreateTopLevelCompositor(). And it failed to connect to GPU process and disabled GPU process and disabled gfxVars::UseWebRender(), but the CreateCompositorSession() already decided to use WebRender before calling the CreateTopLevelCompositor().
| Assignee | ||
Comment 4•8 years ago
|
||
| Assignee | ||
Updated•8 years ago
|
Blocks: wr-stability
| Assignee | ||
Comment 5•8 years ago
|
||
| Assignee | ||
Updated•8 years ago
|
Attachment #9012539 -
Flags: review?(aosmond)
Comment 6•8 years ago
|
||
Comment on attachment 9012539 [details] [diff] [review]
patch - Call GPUProcessManager::EnsureGPUReady() before accessing gfxVars::UseWebRender()
Review of attachment 9012539 [details] [diff] [review]:
-----------------------------------------------------------------
Nice catch.
Attachment #9012539 -
Flags: review?(aosmond) → review+
Pushed by sikeda@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/a94730ef300e
Call GPUProcessManager::EnsureGPUReady() before accessing gfxVars::UseWebRender() r=aosmond
Comment 8•8 years ago
|
||
| bugherder | ||
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox64:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
You need to log in
before you can comment on or make changes to this bug.
Description
•