Closed Bug 1271657 Opened 4 years ago Closed 4 years ago

Various Windows debug e10s test suites hitting "Assertion failure: IsInitialized(), at gfxFeature.h:80" and crashing [@ mozilla::gfx::FeatureState::AssertInitialized()] on Ash

Categories

(Core :: Graphics, defect)

Unspecified
Windows
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla49
Tracking Status
e10s + ---
firefox49 --- fixed

People

(Reporter: RyanVM, Assigned: jrmuizel)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, crash, intermittent-failure, Whiteboard: [e10s-orangeblockers], gfx-noted)

Attachments

(1 file, 3 obsolete files)

Bug 1269387 seems like the most likely candidate. Affects multiple WinXP e10s runs and also reftest-noaccel-e10s on Win7/Win8.

https://treeherder.mozilla.org/logviewer.html#?job_id=176552&repo=ash#L62429

07:25:05     INFO -  REFTEST TEST-START | file:///C:/slave/test/build/tests/reftest/tests/dom/canvas/test/reftest/webgl-clear-test.html
07:25:05     INFO -  REFTEST INFO | RESTORE PREFERENCE pref(webgl.disabled,false)
07:25:05     INFO -  REFTEST INFO | RESTORE PREFERENCE pref(media.useAudioChannelAPI,false)
07:25:05     INFO -  REFTEST INFO | RESTORE PREFERENCE pref(webgl.force-enabled,false)
07:25:05     INFO -  REFTEST INFO | SET PREFERENCE pref(webgl.force-enabled,true)
07:25:05     INFO -  REFTEST INFO | SET PREFERENCE pref(media.useAudioChannelAPI,true)
07:25:05     INFO -  REFTEST TEST-LOAD | file:///C:/slave/test/build/tests/reftest/tests/dom/canvas/test/reftest/webgl-clear-test.html | 4912 / 13554 (36%)
07:25:05     INFO -  ++DOMWINDOW == 218 (10564C00) [pid = 3380] [serial = 15967] [outer = 0C31C000]
07:25:05     INFO -  Assertion failure: IsInitialized(), at c:\builds\moz2_slave\ash-w32-d-00000000000000000000\build\src\gfx\config\gfxFeature.h:80
07:25:05     INFO -  #01: mozilla::gl::GLLibraryEGL::EnsureInitialized(bool) [gfx/gl/GLLibraryEGL.cpp:416]
07:25:05     INFO -  #02: mozilla::gl::GLContextProviderEGL::CreateOffscreen(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const &,mozilla::gl::SurfaceCaps const &,mozilla::gl::CreateContextFlags) [gfx/gl/GLContextProviderEGL.cpp:988]
07:25:05     INFO -  #03: mozilla::CreateGLWithANGLE [dom/canvas/WebGLContext.cpp:602]
07:25:05     INFO -  #04: mozilla::WebGLContext::CreateAndInitGLWith(already_AddRefed<mozilla::gl::GLContext> (*)(mozilla::gl::SurfaceCaps const &,mozilla::gl::CreateContextFlags,mozilla::WebGLContext *),mozilla::gl::SurfaceCaps const &,mozilla::gl::CreateContextFlags) [dom/canvas/WebGLContext.cpp:661]
07:25:05     INFO -  #05: mozilla::WebGLContext::CreateAndInitGL(bool) [dom/canvas/WebGLContext.cpp:703]
07:25:05     INFO -  #06: mozilla::WebGLContext::SetDimensions(int,int) [dom/canvas/WebGLContext.cpp:863]
07:25:05     INFO -  #07: mozilla::dom::CanvasRenderingContextHelper::UpdateContext(JSContext *,JS::Handle<JS::Value>,mozilla::ErrorResult &) [dom/canvas/CanvasRenderingContextHelper.cpp:246]
07:25:05     INFO -  #08: mozilla::dom::CanvasRenderingContextHelper::GetContext(JSContext *,nsAString_internal const &,JS::Handle<JS::Value>,mozilla::ErrorResult &) [dom/canvas/CanvasRenderingContextHelper.cpp:197]
07:25:05     INFO -  #09: mozilla::dom::HTMLCanvasElement::GetContext(JSContext *,nsAString_internal const &,JS::Handle<JS::Value>,mozilla::ErrorResult &) [dom/html/HTMLCanvasElement.cpp:898]
07:25:05     INFO -  #10: mozilla::dom::HTMLCanvasElementBinding::getContext [obj-firefox/dom/bindings/HTMLCanvasElementBinding.cpp:228]
07:25:05     INFO -  #11: mozilla::dom::GenericBindingMethod(JSContext *,unsigned int,JS::Value *) [dom/bindings/BindingUtils.cpp:2781]
07:25:05     INFO -  #12: js::CallJSNative(JSContext *,bool (*)(JSContext *,unsigned int,JS::Value *),JS::CallArgs const &) [js/src/jscntxtinlines.h:235]
07:25:05     INFO -  #13: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct) [js/src/vm/Interpreter.cpp:480]
07:25:05     INFO -  #14: InternalCall [js/src/vm/Interpreter.cpp:525]
07:25:05     INFO -  #15: Interpret [js/src/vm/Interpreter.cpp:2831]
07:25:05     INFO -  #16: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:426]
07:25:05     INFO -  #17: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct) [js/src/vm/Interpreter.cpp:498]
07:25:05     INFO -  #18: InternalCall [js/src/vm/Interpreter.cpp:525]
07:25:05     INFO -  #19: js::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,js::AnyInvokeArgs const &,JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:544]
07:25:05     INFO -  #20: JS::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,JS::HandleValueArray const &,JS::MutableHandle<JS::Value>) [js/src/jsapi.cpp:2926]
07:25:05     INFO -  #21: mozilla::dom::EventHandlerNonNull::Call(JSContext *,JS::Handle<JS::Value>,mozilla::dom::Event &,JS::MutableHandle<JS::Value>,mozilla::ErrorResult &) [obj-firefox/dom/bindings/EventHandlerBinding.cpp:259]
07:25:05     INFO -  #22: mozilla::dom::EventHandlerNonNull::Call<nsISupports *>(nsISupports * const &,mozilla::dom::Event &,JS::MutableHandle<JS::Value>,mozilla::ErrorResult &,char const *,mozilla::dom::CallbackObject::ExceptionHandling,JSCompartment *) [obj-firefox/dist/include/mozilla/dom/EventHandlerBinding.h:356]
07:25:05     INFO -  #23: mozilla::JSEventHandler::HandleEvent(nsIDOMEvent *) [dom/events/JSEventHandler.cpp:215]
07:25:05     INFO -  #24: mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener *,nsIDOMEvent *,mozilla::dom::EventTarget *) [dom/events/EventListenerManager.cpp:1111]
07:25:05     INFO -  #25: mozilla::EventListenerManager::HandleEventInternal(nsPresContext *,mozilla::WidgetEvent *,nsIDOMEvent * *,mozilla::dom::EventTarget *,nsEventStatus *) [dom/events/EventListenerManager.cpp:1282]
07:25:05     INFO -  #26: mozilla::EventListenerManager::HandleEvent(nsPresContext *,mozilla::WidgetEvent *,nsIDOMEvent * *,mozilla::dom::EventTarget *,nsEventStatus *) [obj-firefox/dist/include/mozilla/EventListenerManager.h:350]
07:25:05     INFO -  #27: mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor &,mozilla::ELMCreationDetector &) [dom/events/EventDispatcher.cpp:278]
07:25:05     INFO -  #28: mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem> &,mozilla::EventChainPostVisitor &,mozilla::EventDispatchingCallback *,mozilla::ELMCreationDetector &) [dom/events/EventDispatcher.cpp:381]
07:25:05     INFO -  #29: mozilla::EventDispatcher::Dispatch(nsISupports *,nsPresContext *,mozilla::WidgetEvent *,nsIDOMEvent *,nsEventStatus *,mozilla::EventDispatchingCallback *,nsTArray<mozilla::dom::EventTarget *> *) [dom/events/EventDispatcher.cpp:713]
07:25:05     INFO -  #30: nsDocumentViewer::LoadComplete(nsresult) [layout/base/nsDocumentViewer.cpp:997]
07:25:05     INFO -  #31: nsDocShell::EndPageLoad(nsIWebProgress *,nsIChannel *,nsresult) [docshell/base/nsDocShell.cpp:7525]
07:25:05     INFO -  #32: nsDocShell::OnStateChange(nsIWebProgress *,nsIRequest *,unsigned int,nsresult) [docshell/base/nsDocShell.cpp:7332]
07:25:05     INFO -  #33: nsDocLoader::DoFireOnStateChange(nsIWebProgress * const,nsIRequest * const,int &,nsresult) [uriloader/base/nsDocLoader.cpp:1250]
07:25:05     INFO -  #34: nsDocLoader::doStopDocumentLoad(nsIRequest *,nsresult) [uriloader/base/nsDocLoader.cpp:834]
07:25:05     INFO -  #35: nsDocLoader::DocLoaderIsEmpty(bool) [uriloader/base/nsDocLoader.cpp:726]
07:25:05     INFO -  #36: nsDocLoader::OnStopRequest(nsIRequest *,nsISupports *,nsresult) [uriloader/base/nsDocLoader.cpp:609]
07:25:05     INFO -  #37: nsLoadGroup::RemoveRequest(nsIRequest *,nsISupports *,nsresult) [netwerk/base/nsLoadGroup.cpp:633]
07:25:05     INFO -  #38: nsDocument::DoUnblockOnload() [dom/base/nsDocument.cpp:9202]
07:25:05     INFO -  #39: nsDocument::UnblockOnload(bool) [dom/base/nsDocument.cpp:9129]
07:25:05     INFO -  #40: nsDocument::DispatchContentLoadedEvents() [dom/base/nsDocument.cpp:5271]
07:25:05     INFO -  #41: nsRunnableMethodImpl<void ( nsDocument::*)(void),1,0>::Run() [obj-firefox/dist/include/nsThreadUtils.h:743]
07:25:05     INFO -  #42: nsThread::ProcessNextEvent(bool,bool *) [xpcom/threads/nsThread.cpp:991]
07:25:05     INFO -  #43: NS_ProcessNextEvent(nsIThread *,bool) [xpcom/glue/nsThreadUtils.cpp:290]
07:25:05     INFO -  #44: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate *) [ipc/glue/MessagePump.cpp:98]
07:25:05     INFO -  #45: mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate *) [ipc/glue/MessagePump.cpp:303]
07:25:05     INFO -  #46: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:233]
07:25:05     INFO -  #47: MessageLoop::RunHandler() [ipc/chromium/src/base/message_loop.cc:227]
07:25:05     INFO -  #48: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:207]
07:25:05     INFO -  #49: nsBaseAppShell::Run() [widget/nsBaseAppShell.cpp:158]
07:25:05     INFO -  #50: nsAppShell::Run() [widget/windows/nsAppShell.cpp:264]
07:25:05     INFO -  #51: XRE_RunAppShell [toolkit/xre/nsEmbedFunctions.cpp:802]
07:25:05     INFO -  #52: mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate *) [ipc/glue/MessagePump.cpp:271]
07:25:05     INFO -  #53: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:233]
07:25:05     INFO -  #54: MessageLoop::RunHandler() [ipc/chromium/src/base/message_loop.cc:227]
07:25:05     INFO -  #55: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:207]
07:25:05     INFO -  #56: XRE_InitChildProcess [toolkit/xre/nsEmbedFunctions.cpp:641]
07:25:05     INFO -  #57: content_process_main(int,char * * const) [ipc/contentproc/plugin-container.cpp:238]
07:25:05     INFO -  #58: wmain [toolkit/xre/nsWindowsWMain.cpp:138]
07:25:05     INFO -  #59: __scrt_common_main_seh [f:/dd/vctools/crt/vcstartup/src/startup/exe_common.inl:255]
07:25:05     INFO -  #60: kernel32.dll + 0x53c45
07:25:05     INFO -  #61: ntdll.dll + 0x637f5
07:25:05     INFO -  #62: ntdll.dll + 0x637c8
Flags: needinfo?(jmuizelaar)
I expect the early returns caused this. We don't ever want to be bitten by that so let's just move it out of InitializeDevices completely.
Flags: needinfo?(jmuizelaar)
Attachment #8750815 - Flags: review?(dvander)
Whiteboard: [e10s-orangeblockers] → [e10s-orangeblockers], gfx-noted
Comment on attachment 8750815 [details] [diff] [review]
Ensure that the D3D11_ANGLE feature is initialized

It looks like this would make it only run after a device reset. Maybe the thing to do is add an InitializeWebGLConfig function and make sure it gets called anytime InitializeDevices is called. It could assert that the D3D11 status has been initialized.
Attachment #8750815 - Flags: review?(dvander)
This changes the D3D11_ANGLE gfxConfig code a bunch. The goal here is to avoid hitting assertions from using uninitiated values. As part of this I modified a bunch of FeatureState functions to be no-ops in the case of uninitialization. This simplifies code that handles run-time prefs because it does not need to check if the feature has been initialized. I'm not certain this is the right approach so would welcome feedback.
Attachment #8750815 - Attachment is obsolete: true
Attachment #8753063 - Flags: review?(dvander)
This redoes things again. Changes of note:
 - should always initialize (keeps the assertions in)
 - reenables the blocklist checking that was unintentionally disabled previously
Attachment #8753063 - Attachment is obsolete: true
Attachment #8753063 - Flags: review?(dvander)
Attachment #8754424 - Flags: review?(dvander)
Fix a compile issue
Attachment #8754424 - Attachment is obsolete: true
Attachment #8754424 - Flags: review?(dvander)
Attachment #8755017 - Flags: review?(dvander)
Comment on attachment 8755017 [details] [diff] [review]
Redo gfxConfig support for HW accel d3d11

Review of attachment 8755017 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks!
Attachment #8755017 - Flags: review?(dvander) → review+
Assignee: nobody → jmuizelaar
https://hg.mozilla.org/mozilla-central/rev/727ca0c6f57d
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
You need to log in before you can comment on or make changes to this bug.