Closed Bug 974189 Opened 6 years ago Closed 6 years ago

Black screen in content area during browser start with OMTC enabled


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

Windows 7
Not set



Tracking Status
firefox29 --- unaffected
firefox30 --- verified


(Reporter: jmjjeffery, Assigned: mtseng)



(Keywords: crash, regression, topcrash-win)

Crash Data


(1 file, 1 obsolete file)

Using the latest hourly m-c win32 Build from Tinderbox I'm getting a black screen in the window content area with OMTC Enabled. 

STR:  Enable OMTC layers.offmainthreadcomposition.enabled

Close/restart the browser.  During startup and display of start page the content area is a 'stark' black till the page loads.

Good 20140218120437 6660fdb0885b
Bad  20140218121837 9019cc90719c
Running on Win7 x64 , included for completeness, though so far I've not had much trouble with this older video chip and no current drivers are available for this chipset other than the one I'm currently running, so any update is out of the question.

Adapter Description: ATI Radeon HD 3200 Graphics
Adapter Drivers: aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64
Adapter RAM: 256
ClearType Parameters: D [ Gamma: 2200 Pixel Structure: R ClearType Level: 100 Enhanced Contrast: 300 ] D [ Gamma: 2200 Pixel Structure: R ClearType Level: 100 Enhanced Contrast: 50 ]
Device ID: 0x9610
Direct2D Enabled: true
DirectWrite Enabled: true (6.2.9200.16571)
Driver Date: 7-28-2011
Driver Version: 8.881.0.0
GPU #2 Active: false
GPU Accelerated Windows: 1/1 Direct3D 11 (OMTC)
Vendor ID: 0x1002
WebGL Renderer: Google Inc. -- ANGLE (ATI Radeon HD 3200 Graphics Direct3D9Ex vs_3_0 ps_3_0)
windowLayerManagerRemote: true
AzureCanvasBackend: direct2d
AzureContentBackend: direct2d
AzureFallbackCanvasBackend: cairo
AzureSkiaAccelerated: 0
Opening Scratchpad and attempting to use it with OMTC enabled will cause the browser to crash, as will attempting to scroll in Error Console. 

Will install a Nightly tomorrow and get a crash-report.
Severity: normal → critical
Regression window
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0 ID:20140218063552
Bad(black content)
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0 ID:20140218064851

 c0e256be4775	Morris Tseng — Bug 926128 - Use a single configurable shader in OpenGL layers backend. r=vlad, r=nical, r=gal
Attached patch d3d11_rendering_crash_error (obsolete) — Splinter Review
Color layer forget to call SetPSForEffect and Component Alpha effect might has null texture so check it before use.
Assignee: nobody → mtseng
Attachment #8378179 - Flags: review?(vladimir)
Attachment #8378179 - Flags: review?(gal)
Comment on attachment 8378179 [details] [diff] [review]

Review of attachment 8378179 [details] [diff] [review]:

::: gfx/layers/d3d11/CompositorD3D11.cpp
@@ +549,5 @@
>    switch (aEffectChain.mPrimaryEffect->mType) {
> +      SetPSForEffect(aEffectChain.mPrimaryEffect, maskType, SurfaceFormat::UNKNOWN);

This makes sense.

@@ +636,5 @@
>        MOZ_ASSERT(mAttachments->mComponentBlendState);
>        EffectComponentAlpha* effectComponentAlpha =
>          static_cast<EffectComponentAlpha*>(aEffectChain.mPrimaryEffect.get());
> +      SurfaceFormat fmt = effectComponentAlpha->mTexture ?

This doesn't make sense. Isn't mTexture of EffectComponentAlpha always null? The texture is in mOnWhite and mOnBlack. You can get the format from either of those.
Attachment #8378179 - Flags: review?(vladimir)
Attachment #8378179 - Flags: review?(gal)
Attachment #8378179 - Flags: review-
Update to address comment. I also move all SetPSForEffect function to the location which after checking texture source validation.
Attachment #8378179 - Attachment is obsolete: true
Attachment #8378254 - Flags: review?(gal)
Comment on attachment 8378254 [details] [diff] [review]
d3d11_rendering_crash_error v2

Review of attachment 8378254 [details] [diff] [review]:

Looks good. Ship it.
Attachment #8378254 - Flags: review?(gal) → review+
Morris, do you have commit access?
I only have level 1 access.
Crash Signature: [@ mozilla::layers::CompositorD3D11::DrawQuad(mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::EffectChain const&, float, mozilla::gfx::Matrix4x4 const&)]
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Duplicate of this bug: 947240
What was the change that required the location of these calls to move?  That is, what's null now that wasn't null before?
This crash affects e10s on Windows because e10s requires OMTC.
Blocks: e10s-it1
I move the calls because new location is ensure texture source is valid. Therefore, I can safely get texture's format. This move doesn't resolve any crash here, it just prevent crash if texture is invalid.  The main crash here is because we get mTexture of ComponentAlpha which is always null. The right way is get info from mOnWhite or mOnBlack.
No crashes with this signature reported for builds 20140220
You need to log in before you can comment on or make changes to this bug.