Closed Bug 625118 Opened 14 years ago Closed 13 years ago

[Intel card] Crash on one WebGL conformance test [@ ig4icd32.dll@0x5769e ] with OpenGL (8.15.10.2226) renderer

Categories

(Core :: Graphics: CanvasWebGL, defect)

x86
Windows 7
defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: scoobidiver, Assigned: bjacob)

References

()

Details

(Keywords: crash)

Crash Data

Attachments

(1 file, 2 obsolete files)

I consistently crash in the ref. URL in 4.0b9.
There is no crash on other Web conformance tests.

Signature	ig4icd32.dll@0x5769e
UUID	1093b7d6-0166-4fdf-890a-f65b22110112
Time 	2011-01-12 10:35:22.61100
Uptime	42
Last Crash	46 seconds before submission
Install Age	88663 seconds (1.0 days) since version was first installed.
Product	Firefox
Version	4.0b9
Build ID	20110110191547
Branch	2.0
OS	Windows NT
OS Version	6.1.7600
CPU	x86
CPU Info	GenuineIntel family 6 model 23 stepping 10
Crash Reason	EXCEPTION_ACCESS_VIOLATION_READ
Crash Address	0x0
App Notes 	AdapterVendorID: 8086, AdapterDeviceID: 2a42

Frame 	Module 	Signature [Expand] 	Source
0 	ig4icd32.dll 	ig4icd32.dll@0x5769e 	
1 	xul.dll 	NS_InvokeByIndex_P 	xpcom/reflect/xptcall/src/md/win32/xptcinvoke.cpp:102
2 	xul.dll 	XPC_WN_CallMethod 	js/src/xpconnect/src/xpcwrappednativejsops.cpp:1593
3 	mozjs.dll 	CallCompiler::generateNativeStub 	js/src/methodjit/MonoIC.cpp:691
4 	mozjs.dll 	js::mjit::ic::NativeCall 	js/src/methodjit/MonoIC.cpp:898
5 		@0x9beb9a6 	
6 	mozjs.dll 	js::mjit::EnterMethodJIT 	js/src/methodjit/MethodJIT.cpp:748
7 	mozjs.dll 	CheckStackAndEnterMethodJIT 	js/src/methodjit/MethodJIT.cpp:774
8 	mozjs.dll 	js::mjit::JaegerShot 	js/src/methodjit/MethodJIT.cpp:791
9 	mozjs.dll 	js::RunScript 	js/src/jsinterp.cpp:654
10 	mozjs.dll 	js::Execute 	js/src/jsinterp.cpp:1023
11 	mozjs.dll 	js::EvalKernel 	js/src/jsobj.cpp:1266
12 	mozjs.dll 	js::DirectEval 	js/src/jsinterp.cpp:1368
13 	mozjs.dll 	js::mjit::stubs::Eval 	js/src/methodjit/InvokeHelpers.cpp:447
14 		@0x9be43e8 	
15 	mozjs.dll 	js::mjit::EnterMethodJIT 	js/src/methodjit/MethodJIT.cpp:748
16 	mozjs.dll 	CheckStackAndEnterMethodJIT 	js/src/methodjit/MethodJIT.cpp:774
17 	mozjs.dll 	js::mjit::JaegerShot 	js/src/methodjit/MethodJIT.cpp:791
18 	mozjs.dll 	js::RunScript 	js/src/jsinterp.cpp:654
19 	mozjs.dll 	js::Execute 	js/src/jsinterp.cpp:1023
20 	mozjs.dll 	JS_EvaluateUCScriptForPrincipals 	js/src/jsapi.cpp:4920
21 	mozjs.dll 	JS_EvaluateUCScriptForPrincipalsVersion 	js/src/jsapi.cpp:4896
22 	xul.dll 	nsJSContext::EvaluateString 	dom/base/nsJSEnvironment.cpp:1734

Description de la carte : Mobile Intel(R) 4 Series Express Chipset Family
ID du vendeur : 8086
ID du périphérique : 2a42
RAM de la carte : Unknown
Pilotes de la carte : igdumd64 igd10umd64 igdumdx32 igd10umd32
Version du pilote : 8.15.10.2226
Date du pilote : 10-15-2010
Direct2D activé : true
DirectWrite activé : true
Rendu WebGL : Intel -- Mobile Intel(R) 4 Series Express Chipset Family -- 2.1.0 - Build 8.15.10.2226
Fenêtres avec accélération graphique : 1/1 Direct3D 10
The solution is to blacklist OpenGL on Intel cards altogether. Will write the patch.

Meanwhile if you want WebGL on your machine, install the DirectX runtime so Firefox will be able to use ANGLE. We're working on legal details to have this installed automatically.
> Meanwhile if you want WebGL on your machine, install the DirectX runtime so
> Firefox will be able to use ANGLE. We're working on legal details to have this
> installed automatically.
Now my WebGL renderer is:
Rendu WebGL : TransGaming Inc. -- ANGLE -- OpenGL ES 2.0 (git-devel Jan 10 2011 19:54:16)
And it does not crash any longer.
Summary: [Intel card] Crash on one WebGL conformance test [@ ig4icd32.dll@0x5769e ] (8.15.10.2226) → [Intel card] Crash on one WebGL conformance test [@ ig4icd32.dll@0x5769e ] with OpenGL (8.15.10.2226) renderer
Attached patch block old intel cards (obsolete) — Splinter Review
Here we go, there's a comment in the patch explaining this.
Attachment #503275 - Flags: review?(jmuizelaar)
****! Filed this in the wrong bug
This is what I meant to attach here.
Assignee: nobody → bjacob
Attachment #503275 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #503281 - Flags: review?(jmuizelaar)
Attachment #503275 - Flags: review?(jmuizelaar)
Comment on attachment 503281 [details] [diff] [review]
block WebGL when discouraged (e.g. intel OpenGL)

># HG changeset patch
># Parent 672664d3af0e4d2520b4494db732375ab03faf10
>diff --git a/content/canvas/src/WebGLContext.cpp b/content/canvas/src/WebGLContext.cpp
>--- a/content/canvas/src/WebGLContext.cpp
>+++ b/content/canvas/src/WebGLContext.cpp
>@@ -413,26 +413,22 @@ WebGLContext::SetDimensions(PRInt32 widt
>     // Ask GfxInfo about what we should use
>     PRBool useOpenGL = PR_TRUE;
>     PRBool useANGLE = PR_TRUE;
> 
>     nsCOMPtr<nsIGfxInfo> gfxInfo = do_GetService("@mozilla.org/gfx/info;1");
>     if (gfxInfo) {
>         PRInt32 status;
>         if (NS_SUCCEEDED(gfxInfo->GetFeatureStatus(nsIGfxInfo::FEATURE_WEBGL_OPENGL, &status))) {
>-            if (status == nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION ||
>-                status == nsIGfxInfo::FEATURE_BLOCKED_DEVICE)
>-            {
>+            if (status != nsIGfxInfo::FEATURE_NO_INFO) {
>                 useOpenGL = PR_FALSE;
>             }
>         }

This part is good...

>         if (NS_SUCCEEDED(gfxInfo->GetFeatureStatus(nsIGfxInfo::FEATURE_WEBGL_ANGLE, &status))) {
>-            if (status == nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION ||
>-                status == nsIGfxInfo::FEATURE_BLOCKED_DEVICE)
>-            {
>+            if (status != nsIGfxInfo::FEATURE_NO_INFO) {
>                 useANGLE = PR_FALSE;
>             }
>         }
>     }

This part isn't -- if we have no info about ANGLE, we should use ANGLE.  That is, we always want to use ANGLE, except on non-intel platforms where we're ok to try native GL as well.

This is all really convoluted unfortunately, and at some point we may want to rework it.  Doesn't have to be in this big, just attaching thoughts here.  I'm thinking we just want:

webgl.renderer pref "auto", "angle", "gl"

if "auto":
  try ANGLE first, if not blocked
  try GL second, if not blocked

if "angle":
  try ANGLE only, ignore block status; never try desktop GL

if "gl"
  try GL only, ignoe block status; never try desktop GL


Also, this patch has a pile of webgl conformance test fixes in it?

>diff --git a/content/canvas/test/webgl/test_webgl_conformance_test_suite.html b/content/canvas/test/webgl/test_webgl_conformance_test_suite.html
Attachment #503281 - Flags: review?(jmuizelaar) → review-
Removed the unwanted stuff that crept into the patch.

But I don't understand your other comment. WEBGL_OPENGL is discouraged, but WEBGL_ANGLE isn't. So my code isn't blocking ANGLE from being used here.
Attachment #505156 - Flags: review?(vladimir)
Attachment #503281 - Attachment is obsolete: true
(In reply to comment #7)
> Created attachment 505156 [details] [diff] [review]
> block WebGL when discouraged (e.g. intel OpenGL)
> 
> Removed the unwanted stuff that crept into the patch.
> 
> But I don't understand your other comment. WEBGL_OPENGL is discouraged, but
> WEBGL_ANGLE isn't. So my code isn't blocking ANGLE from being used here.

if querying FEATURE_WEBGL_ANGLE returns NO_INFO, the code as written will set useANGLE to PR_FALSE, preventing ANGLE from being used, right?
Are you misreading != as == ?

I guess that the double negation here ( != NO_INFO ) is a bit misleading?
ugh sorry, you're right -- I kept reading == instead of !=.  Fine as-is.
Attachment #505156 - Flags: feedback+
Attachment #505156 - Flags: feedback+ → approval2.0+
http://hg.mozilla.org/mozilla-central/rev/c3d566d61062
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Blocks: 598940
Blocks: 616864
Blocks: 594357
Depends on: 630628
Crash Signature: [@ ig4icd32.dll@0x5769e ]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: