Closed Bug 1646255 Opened 4 years ago Closed 3 years ago

Crash in [@ mozilla::layers::CanvasClient::UseTexture]

Categories

(Core :: Graphics: Layers, defect, P2)

Unspecified
Windows
defect

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox77 --- unaffected
firefox78 --- unaffected
firefox79 + wontfix
firefox80 - wontfix
firefox81 --- wontfix
firefox82 --- fix-optional

People

(Reporter: RyanVM, Assigned: jgilbert)

References

(Regression)

Details

(Keywords: crash, regression)

Crash Data

This bug is for crash report bp-a3431afd-f1ef-4cf1-bbcf-6a2420200615.

This signature first appeared in the 20200611093454 Nightly build. Pushlog for that build:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=fab7c4f54054&tochange=10ad7868f3ca27cb90db9bd1d392ff4d7852a0cd

Regression from bug 1632249?

Top 10 frames of crashing thread:

0 xul.dll mozilla::layers::CanvasClient::UseTexture gfx/layers/client/CanvasClient.cpp:38
1 xul.dll mozilla::layers::ShareableCanvasRenderer::UpdateCompositableClient gfx/layers/ShareableCanvasRenderer.cpp:192
2 xul.dll nsDisplayCanvas::CreateWebRenderCommands layout/generic/nsHTMLCanvasFrame.cpp:138
3 xul.dll mozilla::layers::WebRenderCommandBuilder::CreateWebRenderCommands gfx/layers/wr/WebRenderCommandBuilder.cpp:1651
4 xul.dll mozilla::layers::WebRenderCommandBuilder::CreateWebRenderCommandsFromDisplayList gfx/layers/wr/WebRenderCommandBuilder.cpp:1756
5 xul.dll mozilla::layers::WebRenderCommandBuilder::BuildWebRenderCommands gfx/layers/wr/WebRenderCommandBuilder.cpp:1577
6 xul.dll mozilla::layers::WebRenderLayerManager::EndTransactionWithoutLayer gfx/layers/wr/WebRenderLayerManager.cpp:322
7 xul.dll nsDisplayList::PaintRoot layout/painting/nsDisplayList.cpp:2382
8 xul.dll static nsLayoutUtils::PaintFrame layout/base/nsLayoutUtils.cpp:4142
9 xul.dll mozilla::PresShell::Paint layout/base/PresShell.cpp:6347
Flags: needinfo?(jgilbert)

Ah yes, definitely from bug 1632249. The crashes correlate exactly with when those patches landed, were backed out, and then re-landed.

Regressed by: 1632249
Has Regression Range: --- → yes
Assignee: nobody → jgilbert
Severity: -- → S2
Flags: needinfo?(jgilbert)
Priority: -- → P1

Low volume.

Priority: P1 → P2
Severity: S2 → S3

Interestingly, we haven't seen any crashes in 79.0b7+, which corresponds to when the early beta period ended. Is this maybe tied to something only enabled through early beta?

Flags: needinfo?(jgilbert)

(In reply to Ryan VanderMeulen [:RyanVM] from comment #3)

Interestingly, we haven't seen any crashes in 79.0b7+, which corresponds to when the early beta period ended. Is this maybe tied to something only enabled through early beta?

Hmm, I guess this could be that remote canvas 2D is only enabled for early beta.
jgilbert - could the refactoring for WebGL in bug 1632249 have affected Canvas 2D as well?

(In reply to Bob Owen (:bobowen) from comment #4)

(In reply to Ryan VanderMeulen [:RyanVM] from comment #3)

Interestingly, we haven't seen any crashes in 79.0b7+, which corresponds to when the early beta period ended. Is this maybe tied to something only enabled through early beta?

Hmm, I guess this could be that remote canvas 2D is only enabled for early beta.
jgilbert - could the refactoring for WebGL in bug 1632249 have affected Canvas 2D as well?

Sure does! 1632249 touched the compositing path for both canvas2d and webgl.

Flags: needinfo?(jgilbert)

Due to the size of this refactor, I'm really struggling to see how the remote canvas setting affects this.

It looks like the context is a webgl one, because the mIsAlphaPremult in CanvasRendererData is false, which as far as I can see can only happen in ClientWebGLContext.
I also notice that we've had another one in Fx79b9, so maybe this is still there without remote canvas, just less likely.

jgilbert: can you take a look please, because you probably have a better handle on how those changes might have caused this.

Flags: needinfo?(jgilbert)

So this is a DIAG_ASSERT, so I expect this is surfacing a possible correctness invariant violation, so that's not awful once it goes away on Release. P2/S3 sounds right here, absent evidence of worsening crashrates or actual reports of correctness issues.

I agree that this sounds like the WebGL side of things due to the premult-alpha aspect here.

Flags: needinfo?(jgilbert)

(In reply to Jeff Gilbert [:jgilbert] from comment #7)

So this is a DIAG_ASSERT, so I expect this is surfacing a possible correctness invariant violation, so that's not awful once it goes away on Release. P2/S3 sounds right here, absent evidence of worsening crashrates or actual reports of correctness issues.

I agree that this sounds like the WebGL side of things due to the premult-alpha aspect here.

OK thanks, I'd forgotten that MOZ_ALWAYS_TRUE was a diagnostic assert.
I'll stop worrying about this from a remote canvas 2D point of view then.

Closing because no crashes reported for 12 weeks.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.