Hang on offscreen canvas demo with ublock origin installed
Categories
(Core :: Graphics: Canvas2D, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr115 | --- | unaffected |
| firefox121 | --- | unaffected |
| firefox122 | --- | unaffected |
| firefox123 | --- | fixed |
People
(Reporter: mayankleoboy1, Assigned: aosmond)
References
(Regression)
Details
(Keywords: crash, regression)
Crash Data
Attachments
(2 files, 1 external file)
This is a weird bug, so bear with me.
Create new profile
Install ublock origin from here : https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
Let it download lists etc for 30 seconds or so
Go to : https://web.dev/articles/offscreen-canvas
Click on the ublock icon on the toolbar and disable ublock for the demo tab (i.e. click on the big "powr off" button"). Click on the reload button . The page will reload
Now click on the icon again ->enable ublock for the demo tab->Click to reload the page. The page will start to reload.
Sometimes during this reload, the browser will hang (some IPC timeout).
AR: Browser will hang, gfx-log says there is some IPC timeout.
ERL Not so
Edit: My STR seem to be a roundabout way of adding some IPC traffic that causes timeouts in Offcreencanvas. I guess easier steps/testcase can be created without using uBO.
| Reporter | ||
Comment 1•2 years ago
|
||
GP+[GFX1-]: GFX: D3D11 lock failed 0x887a0001
(#14) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#15) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#16) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#17) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#18) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#19) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#20) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#21) CP+[GFX1-]: IPC Channel is already torn down unexpectedly
(#22) CP+[GFX1-]: IPC Channel is already torn down unexpectedly
(#23) CP+[GFX1-]: IPC Channel is already torn down unexpectedly
(#24) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#25) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#26) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#27) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
(#28) CP+[GFX1]: Attempt to render into a Canvas2d after shutdown.
| Reporter | ||
Comment 2•2 years ago
|
||
And while I was trying to create this video, the browser crashed while the page was reloading with ublock disabled.
If this doesnt crash for you, do try to enable ublock and reload the page.
| Reporter | ||
Comment 3•2 years ago
|
||
Comment 4•2 years ago
|
||
:aosmond, since you are the author of the regressor, bug 1795296, could you take a look? Also, could you set the severity field?
For more information, please visit BugBot documentation.
| Reporter | ||
Comment 5•2 years ago
|
||
GP+[GFX1-]: GFX: D3D11 lock failed 0x887a0001
(#35) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#36) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#37) Error GPU process is being launched whilst app is in background
(#38) Error CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#39) Error CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#40) Error CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#41) Error CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#42) Error CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#43) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#44) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#45) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#46) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#47) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#48) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
(#49) CP+[GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown
| Assignee | ||
Comment 6•2 years ago
|
||
From https://learn.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-error:
0x887a0001 maps to DXGI_ERROR_INVALID_CALL
The application provided invalid parameter data; this must be debugged and fixed before the application is released.
| Assignee | ||
Comment 7•2 years ago
|
||
We never used to enforce these locks in canvas D2D, so it is hard to know if this is specific to OffscreenCanvas, or a consequence of bug 1829026.
There are a few candidates where the lock could be failing:
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/ipc/CanvasTranslator.cpp#607
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/ipc/CanvasTranslator.cpp#777
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/ipc/CanvasTranslator.cpp#827
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/ipc/CanvasTranslator.cpp#885
| Assignee | ||
Comment 8•2 years ago
|
||
I think this has produced some crash reports.
| Assignee | ||
Comment 9•2 years ago
|
||
So we hit this assert which assumes we cannot call CanvasTranslator::CreateDrawTarget without having called CanvasTranslator::SetNextTextureId:
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/ipc/CanvasTranslator.cpp#747
We should get a draw target via RecordedTextureData::Lock:
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/client/TextureRecorded.cpp#146
and hence the events should come in together but in this case they seem not to.
| Assignee | ||
Comment 10•2 years ago
|
||
Actually this is probably unrelated to the crash.
| Assignee | ||
Comment 11•2 years ago
|
||
I'm seeing this in my critical log, which makes sense:
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/layers/composite/TextureHost.cpp#250
We timeout here:
https://searchfox.org/mozilla-central/rev/008ce958417fd724e02748740d669aafd49debb3/gfx/ipc/CanvasManagerParent.cpp#216
And it is blocking the compositor thread, so the UI locks.
Updated•2 years ago
|
Comment 12•2 years ago
|
||
I think I overclassified this one. S3 for being a tricky-to-reproduce hang and not a crash.
| Assignee | ||
Comment 13•2 years ago
|
||
This patch merges RecordedNextTextureId and RecordedDrawTargetCreation
into a single event RecordedCanvasDrawTargetCreation for recording
canvases. This should ensure that we do not somehow miss providing the
relevant remote texture IDs. It also now diagnostic asserts that canvas
recording/playback do not use the original RecordedDrawTargetCreation
event.
Updated•2 years ago
|
Comment 14•2 years ago
|
||
| Assignee | ||
Updated•2 years ago
|
Comment 15•2 years ago
|
||
Backed out as requested by aosmond
Updated•2 years ago
|
Comment 16•2 years ago
|
||
| Assignee | ||
Updated•2 years ago
|
Comment 17•2 years ago
|
||
| bugherder | ||
Updated•2 years ago
|
Description
•