Closed Bug 1754978 Opened 4 years ago Closed 3 years ago

Rework presentation pipeline to use AsyncImagePipeline

Categories

(Core :: Graphics: WebGPU, task, P3)

task

Tracking

()

RESOLVED FIXED
99 Branch
Tracking Status
firefox99 --- fixed

People

(Reporter: aosmond, Assigned: aosmond)

References

Details

Attachments

(2 files)

We should rework WebGPU to move away from external image IDs directly in the display list, to using a CompositableHandle and AsyncImagePipeline. This would let us update it off the main thread.

There are two possible ways to do this:

  1. Wrap the texture produced by PresentCallback in a serializable TextureHost, and use ImageBridgeParent/Child as designed today

  2. Add a new type of CompositableHandle which is owned completely by the compositor process. Today we have sync and async handles, but the content process is responsible for orchestrating the updates by bouncing from the compositor process to the content process and back via ImageBridge. We could add a third type of handle which is completely managed internally -- this should be usable by WebGPU because everything is async by nature in it.

Either way, this would remove the biggest barrier to allowing OffscreenCanvas to create WebGPU instances off the main thread.

As part of this work, we should consider solving the race condition that still exists between the Renderer thread doing an upload of the texture, and PresentCallback writing to the same buffer.

For the second case, there are a few key entry points:

  1. Expand WebRenderBridgeParent::AddPipelineIdForCompositable and related to handle a third type of handle, essentially just look at another child process specific hashmap to go from CompositableHandle to WebRenderImageHost
  2. WebGPUParent::RecvDeviceCreateSwapChain would create a WebRenderImageHost and register it in the hashmap above so that WRBP can later discover it. This would be similar to how CompositableParentManager::AddCompositable works. I'm not sure if we can reuse CompositableParentManager however since we would have no need for the HostIPCAllocator bits.
  3. When PresentCallback completes, it needs to call WebRenderImageHost::UseTextureHost (or similar) to bind the given texture to the host, and schedule a composition to produce the next frame

For WebGPU, we produce the textures in the compositor process and the
content process doesn't need to be that involved except for hooking up
the texture to the display list. Currently this is done via an external
image ID.

Given that WebGPU needs to work with OffscreenCanvas, it would be best
if its display pipeline was consistent whether it was gotten from an
HTMLCanvasElement, OffscreenCanvas on the main thread, or on a worker
thread. As such, using an AsyncImagePipeline would be best.

However there is no real need to bounce the handles across process
boundaries. Hence this patch which adds CompositableInProcessManager.
This static class is responsible for collecting WebRenderImageHost
objects backed by TextureHost objects which do not leave the compositor
process. This will allow WebGPUParent to schedule compositions directly
in future patches.

This patch removes more main thread dependencies from the content side
of WebGPU. Instead of issuing a resource update for an external image,
we now use an async image pipeline in conjunction with
CompositableInProcessManager from part 1. This allows us to update the
HTMLCanvasElement bound to the WebGPU device without having to go
through the main thread, or even the content process after the swap
chain update / readback has been requested.

Attachment #9263564 - Attachment description: Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. → Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro
Pushed by aosmond@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/98983bf9eaed Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro https://hg.mozilla.org/integration/autoland/rev/491a985fc34a Part 2. Switch WebGPU to use async image pipelines for display. r=kvark
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 99 Branch

Backed out for causing valgrind(v-swr) bustages.

Push with failures

Failure log

Backout link
The first line of fail TEST-UNEXPECTED-FAIL | valgrind-test | 20 bytes in 1 blocks are definitely lost at malloc / moz_xmalloc / nsDynamicAtom::Create / nsAtomTable::Atomize it is older and it's intermittent but the second line TEST-UNEXPECTED-FAIL | valgrind-test | 24 bytes in 1 blocks are definitely lost at malloc / wr_thread_pool_new / WebRenderThreadPool / RenderThread of failure it's new and the backfills pointed at this bug.

[task 2022-02-17T20:04:36.458Z] 20:04:36     INFO -  ==11233== HEAP SUMMARY:
[task 2022-02-17T20:04:36.458Z] 20:04:36     INFO -  ==11233==     in use at exit: 10,721,263 bytes in 60,930 blocks
[task 2022-02-17T20:04:36.458Z] 20:04:36     INFO -  ==11233==   total heap usage: 5,749,482 allocs, 5,688,552 frees, 3,580,902,575 bytes allocated
[task 2022-02-17T20:04:36.458Z] 20:04:36     INFO -  ==11233==
[task 2022-02-17T20:04:36.493Z] 20:04:36     INFO -  ==11233== Searching for pointers to 59,767 not-freed blocks
[task 2022-02-17T20:04:37.149Z] 20:04:37     INFO -  ==11233== Checked 367,207,552 bytes
[task 2022-02-17T20:04:37.149Z] 20:04:37     INFO -  ==11233==
[task 2022-02-17T20:04:37.758Z] 20:04:37     INFO -  TEST-UNEXPECTED-FAIL | valgrind-test | 20 bytes in 1 blocks are definitely lost at malloc / moz_xmalloc / nsDynamicAtom::Create / nsAtomTable::Atomize
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233== 20 bytes in 1 blocks are definitely lost in loss record 3,930 of 20,916
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233==    at 0x48397B5: malloc+117 (vg_replace_malloc.c:381)
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233==    by 0x12D230: moz_xmalloc+16 (checkouts/gecko/memory/mozalloc/mozalloc.cpp:52)
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233==    by 0xAF5EAAC: nsDynamicAtom::Create(nsTSubstring<char16_t> const&, unsigned int)+140 (checkouts/gecko/xpcom/ds/nsAtomTable.cpp:90)
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233==    by 0xAF5F939: nsAtomTable::Atomize(nsTSubstring<char> const&)+265 (checkouts/gecko/xpcom/ds/nsAtomTable.cpp:566)
[task 2022-02-17T20:04:37.759Z] 20:04:37     INFO -  ==11233==    by 0xB04F517: nsLanguageAtomService::LookupLanguage(nsTSubstring<char> const&)+87 (checkouts/gecko/intl/locale/nsLanguageAtomService.cpp:102)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBD7438E: gfxFcPlatformFontList::TryLangForGroup(nsTSubstring<char> const&, nsAtom*, nsTSubstring<char>&, bool)+382 (checkouts/gecko/gfx/thebes/gfxFcPlatformFontList.cpp:2504)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBD6F86E: gfxFcPlatformFontList::GetSampleLangForGroup(nsAtom*, nsTSubstring<char>&, bool)+734 (checkouts/gecko/gfx/thebes/gfxFcPlatformFontList.cpp:2569)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBD72691: gfxFcPlatformFontList::FindGenericFamilies(nsPresContext*, nsTString<char> const&, nsAtom*)+113 (checkouts/gecko/gfx/thebes/gfxFcPlatformFontList.cpp:2299)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBD725E4: gfxFcPlatformFontList::GetDefaultFontForPlatform(nsPresContext*, gfxFontStyle const*, nsAtom*)+68 (checkouts/gecko/gfx/thebes/gfxFcPlatformFontList.cpp:1991)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBDC0C37: gfxPlatformFontList::GetDefaultFont(nsPresContext*, gfxFontStyle const*)+39 (checkouts/gecko/gfx/thebes/gfxPlatformFontList.cpp:2358)
[task 2022-02-17T20:04:37.760Z] 20:04:37     INFO -  ==11233==    by 0xBDBEFEF: gfxPlatformFontList::InitFontList()+1279 (checkouts/gecko/gfx/thebes/gfxPlatformFontList.cpp:573)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xBDBE9F8: gfxPlatformFontList::Initialize(gfxPlatformFontList*)+72 (checkouts/gecko/gfx/thebes/gfxPlatformFontList.cpp:259)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xBD7B2D0: gfxPlatform::Init()+3152 (checkouts/gecko/gfx/thebes/gfxPlatform.cpp:966)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xBD7A64F: gfxPlatform::GetPlatform()+31 (checkouts/gecko/gfx/thebes/gfxPlatform.cpp:465)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xD9610D1: mozilla::widget::GfxInfoBase::GetContentBackend(nsTSubstring<char16_t>&)+33 (checkouts/gecko/widget/GfxInfoBase.cpp:1819)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xAFE6CD5: ??? (xptcinvoke_asm_x86_64_unix.S:101)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: Invoke (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1631)
[task 2022-02-17T20:04:37.761Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: Call (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1184)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)+4060 (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1130)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xBA0B251: GetAttribute (checkouts/gecko/js/xpconnect/src/xpcprivate.h:1476)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xBA0B251: XPC_WN_GetterSetter(JSContext*, unsigned int, JS::Value*)+625 (checkouts/gecko/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:963)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xEF395E0: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+768 (checkouts/gecko/js/src/vm/Interpreter.cpp:425)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.762Z] 20:04:37     INFO -  ==11233==    by 0xEF3A986: js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>)+150 (checkouts/gecko/js/src/vm/Interpreter.cpp:715)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xF064B91: js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>)+2241 (checkouts/gecko/js/src/vm/NativeObject.cpp:1970)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetProperty (checkouts/gecko/js/src/vm/ObjectOperations-inl.h:120)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetObjectElementOperation (checkouts/gecko/js/src/vm/Interpreter-inl.h:416)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetElementOperationWithStackIndex (checkouts/gecko/js/src/vm/Interpreter-inl.h:513)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: Interpret(JSContext*, js::RunState&)+31967 (checkouts/gecko/js/src/vm/Interpreter.cpp:3108)
[task 2022-02-17T20:04:37.763Z] 20:04:37     INFO -  ==11233==    by 0xEF2A9E1: js::RunScript(JSContext*, js::RunState&)+657 (checkouts/gecko/js/src/vm/Interpreter.cpp:394)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xEF39917: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+1591 (checkouts/gecko/js/src/vm/Interpreter.cpp:544)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xEF3A986: js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>)+150 (checkouts/gecko/js/src/vm/Interpreter.cpp:715)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xF064B91: js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>)+2241 (checkouts/gecko/js/src/vm/NativeObject.cpp:1970)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xEF3C5EE: js::GetProperty(JSContext*, JS::Handle<JS::Value>, JS::Handle<js::PropertyName*>, JS::MutableHandle<JS::Value>)+1038 (checkouts/gecko/js/src/vm/ObjectOperations-inl.h:120)
[task 2022-02-17T20:04:37.764Z] 20:04:37     INFO -  ==11233==    by 0xEF31107: GetPropertyOperation (checkouts/gecko/js/src/vm/Interpreter.cpp:208)
[task 2022-02-17T20:04:37.765Z] 20:04:37     INFO -  ==11233==    by 0xEF31107: Interpret(JSContext*, js::RunState&)+26343 (checkouts/gecko/js/src/vm/Interpreter.cpp:2973)
[task 2022-02-17T20:04:37.765Z] 20:04:37     INFO -  ==11233==    by 0xEF2A9E1: js::RunScript(JSContext*, js::RunState&)+657 (checkouts/gecko/js/src/vm/Interpreter.cpp:394)
[task 2022-02-17T20:04:37.765Z] 20:04:37     INFO -  ==11233==    by 0xEF39917: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+1591 (checkouts/gecko/js/src/vm/Interpreter.cpp:544)
[task 2022-02-17T20:04:37.765Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.765Z] 20:04:37     INFO -  ==11233==    by 0xEFBC75E: JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>)+654 (checkouts/gecko/js/src/vm/CallAndConstruct.cpp:53)
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -  ==11233==    by 0xBA051AC: nsXPCWrappedJS::CallMethod(unsigned short, nsXPTMethodInfo const*, nsXPTCMiniVariant*)+2940 (checkouts/gecko/js/xpconnect/src/XPCWrappedJSClass.cpp:981)
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -  ==11233==    by 0xAFE7A54: PrepareAndDispatch+548 (checkouts/gecko/xpcom/reflect/xptcall/md/unix/xptcstubs_x86_64_linux.cpp:115)
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -  ==11233==
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -  {
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     <insert_a_suppression_name_here>
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     Memcheck:Leak
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     match-leak-kinds: definite
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     fun:malloc
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     fun:moz_xmalloc
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     fun:_ZN13nsDynamicAtom6CreateERK12nsTSubstringIDsEj
[task 2022-02-17T20:04:37.766Z] 20:04:37     INFO -     fun:_ZN11nsAtomTable7AtomizeERK12nsTSubstringIcE
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN21nsLanguageAtomService14LookupLanguageERK12nsTSubstringIcE
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN21gfxFcPlatformFontList15TryLangForGroupERK12nsTSubstringIcEP6nsAtomRS1_b
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN21gfxFcPlatformFontList21GetSampleLangForGroupEP6nsAtomR12nsTSubstringIcEb
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN21gfxFcPlatformFontList19FindGenericFamiliesEP13nsPresContextRK9nsTStringIcEP6nsAtom
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN21gfxFcPlatformFontList25GetDefaultFontForPlatformEP13nsPresContextPK12gfxFontStyleP6nsAtom
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN19gfxPlatformFontList14GetDefaultFontEP13nsPresContextPK12gfxFontStyle
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN19gfxPlatformFontList12InitFontListEv
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN19gfxPlatformFontList10InitializeEPS_
[task 2022-02-17T20:04:37.767Z] 20:04:37     INFO -     fun:_ZN11gfxPlatform4InitEv
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:_ZN11gfxPlatform11GetPlatformEv
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:_ZN7mozilla6widget11GfxInfoBase17GetContentBackendER12nsTSubstringIDsE
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     obj:/builds/worker/workspace/obj-build/toolkit/library/build/libxul.so
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:Invoke
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:Call
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:_ZN16XPCWrappedNative10CallMethodER14XPCCallContextNS_8CallModeE
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:GetAttribute
[task 2022-02-17T20:04:37.768Z] 20:04:37     INFO -     fun:_Z19XPC_WN_GetterSetterP9JSContextjPN2JS5ValueE
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:_ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:_ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:_ZN2js10CallGetterEP9JSContextN2JS6HandleINS2_5ValueEEES5_NS2_13MutableHandleIS4_EE
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:_ZN2js17NativeGetPropertyEP9JSContextN2JS6HandleIPNS_12NativeObjectEEENS3_INS2_5ValueEEENS3_INS2_11PropertyKeyEEENS2_13MutableHandleIS7_EE
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:GetProperty
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:GetObjectElementOperation
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:GetElementOperationWithStackIndex
[task 2022-02-17T20:04:37.769Z] 20:04:37     INFO -     fun:_ZL9InterpretP9JSContextRN2js8RunStateE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js9RunScriptEP9JSContextRNS_8RunStateE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js10CallGetterEP9JSContextN2JS6HandleINS2_5ValueEEES5_NS2_13MutableHandleIS4_EE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js17NativeGetPropertyEP9JSContextN2JS6HandleIPNS_12NativeObjectEEENS3_INS2_5ValueEEENS3_INS2_11PropertyKeyEEENS2_13MutableHandleIS7_EE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:_ZN2js11GetPropertyEP9JSContextN2JS6HandleINS2_5ValueEEENS3_IPNS_12PropertyNameEEENS2_13MutableHandleIS4_EE
[task 2022-02-17T20:04:37.770Z] 20:04:37     INFO -     fun:GetPropertyOperation
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_ZL9InterpretP9JSContextRN2js8RunStateE
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_ZN2js9RunScriptEP9JSContextRNS_8RunStateE
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_Z20JS_CallFunctionValueP9JSContextN2JS6HandleIP8JSObjectEENS2_INS1_5ValueEEERKNS1_16HandleValueArrayENS1_13MutableHandleIS6_EE
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:_ZN14nsXPCWrappedJS10CallMethodEtPK15nsXPTMethodInfoP17nsXPTCMiniVariant
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -     fun:PrepareAndDispatch
[task 2022-02-17T20:04:37.771Z] 20:04:37     INFO -  }
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  TEST-UNEXPECTED-FAIL | valgrind-test | 24 bytes in 1 blocks are definitely lost at malloc / wr_thread_pool_new / WebRenderThreadPool / RenderThread
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  ==11233== 24 bytes in 1 blocks are definitely lost in loss record 4,896 of 20,916
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  ==11233==    at 0x48397B5: malloc+117 (vg_replace_malloc.c:381)
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  ==11233==    by 0x105575D4: wr_thread_pool_new+2212 (library/std/src/sys/unix/alloc.rs:14)
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  ==11233==    by 0xBE35E85: WebRenderThreadPool (checkouts/gecko/gfx/webrender_bindings/RenderThread.cpp:1124)
[task 2022-02-17T20:04:37.885Z] 20:04:37     INFO -  ==11233==    by 0xBE35E85: RenderThread (checkouts/gecko/gfx/webrender_bindings/RenderThread.cpp:74)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xBE35E85: mozilla::wr::RenderThread::Start(unsigned int)+213 (checkouts/gecko/gfx/webrender_bindings/RenderThread.cpp:116)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xBD7C0FE: gfxPlatform::InitLayersIPC()+78 (checkouts/gecko/gfx/thebes/gfxPlatform.cpp:1290)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xBD7B2B0: gfxPlatform::Init()+3120 (checkouts/gecko/gfx/thebes/gfxPlatform.cpp:959)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xBD7A64F: gfxPlatform::GetPlatform()+31 (checkouts/gecko/gfx/thebes/gfxPlatform.cpp:465)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xD9610D1: mozilla::widget::GfxInfoBase::GetContentBackend(nsTSubstring<char16_t>&)+33 (checkouts/gecko/widget/GfxInfoBase.cpp:1819)
[task 2022-02-17T20:04:37.886Z] 20:04:37     INFO -  ==11233==    by 0xAFE6CD5: ??? (xptcinvoke_asm_x86_64_unix.S:101)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: Invoke (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1631)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: Call (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1184)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xBA09A9C: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)+4060 (checkouts/gecko/js/xpconnect/src/XPCWrappedNative.cpp:1130)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xBA0B251: GetAttribute (checkouts/gecko/js/xpconnect/src/xpcprivate.h:1476)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xBA0B251: XPC_WN_GetterSetter(JSContext*, unsigned int, JS::Value*)+625 (checkouts/gecko/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:963)
[task 2022-02-17T20:04:37.887Z] 20:04:37     INFO -  ==11233==    by 0xEF395E0: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+768 (checkouts/gecko/js/src/vm/Interpreter.cpp:425)
[task 2022-02-17T20:04:37.888Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.888Z] 20:04:37     INFO -  ==11233==    by 0xEF3A986: js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>)+150 (checkouts/gecko/js/src/vm/Interpreter.cpp:715)
[task 2022-02-17T20:04:37.888Z] 20:04:37     INFO -  ==11233==    by 0xF064B91: js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>)+2241 (checkouts/gecko/js/src/vm/NativeObject.cpp:1970)
[task 2022-02-17T20:04:37.888Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetProperty (checkouts/gecko/js/src/vm/ObjectOperations-inl.h:120)
[task 2022-02-17T20:04:37.888Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetObjectElementOperation (checkouts/gecko/js/src/vm/Interpreter-inl.h:416)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: GetElementOperationWithStackIndex (checkouts/gecko/js/src/vm/Interpreter-inl.h:513)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF326FF: Interpret(JSContext*, js::RunState&)+31967 (checkouts/gecko/js/src/vm/Interpreter.cpp:3108)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF2A9E1: js::RunScript(JSContext*, js::RunState&)+657 (checkouts/gecko/js/src/vm/Interpreter.cpp:394)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF39917: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+1591 (checkouts/gecko/js/src/vm/Interpreter.cpp:544)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.889Z] 20:04:37     INFO -  ==11233==    by 0xEF3A986: js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>)+150 (checkouts/gecko/js/src/vm/Interpreter.cpp:715)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xF064B91: js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>)+2241 (checkouts/gecko/js/src/vm/NativeObject.cpp:1970)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xEF3C5EE: js::GetProperty(JSContext*, JS::Handle<JS::Value>, JS::Handle<js::PropertyName*>, JS::MutableHandle<JS::Value>)+1038 (checkouts/gecko/js/src/vm/ObjectOperations-inl.h:120)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xEF31107: GetPropertyOperation (checkouts/gecko/js/src/vm/Interpreter.cpp:208)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xEF31107: Interpret(JSContext*, js::RunState&)+26343 (checkouts/gecko/js/src/vm/Interpreter.cpp:2973)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xEF2A9E1: js::RunScript(JSContext*, js::RunState&)+657 (checkouts/gecko/js/src/vm/Interpreter.cpp:394)
[task 2022-02-17T20:04:37.890Z] 20:04:37     INFO -  ==11233==    by 0xEF39917: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason)+1591 (checkouts/gecko/js/src/vm/Interpreter.cpp:544)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xEF3A0DC: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason)+156 (checkouts/gecko/js/src/vm/Interpreter.cpp:572)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xEFBC75E: JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>)+654 (checkouts/gecko/js/src/vm/CallAndConstruct.cpp:53)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xBA051AC: nsXPCWrappedJS::CallMethod(unsigned short, nsXPTMethodInfo const*, nsXPTCMiniVariant*)+2940 (checkouts/gecko/js/xpconnect/src/XPCWrappedJSClass.cpp:981)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xAFE7A54: PrepareAndDispatch+548 (checkouts/gecko/xpcom/reflect/xptcall/md/unix/xptcstubs_x86_64_linux.cpp:115)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xAFE6E8E: SharedStub+90 (in /builds/worker/workspace/obj-build/toolkit/library/build/libxul.so)
[task 2022-02-17T20:04:37.891Z] 20:04:37     INFO -  ==11233==    by 0xAFAC652: NS_CreateServicesFromCategory(char const*, nsISupports*, char const*, char16_t const*)+1106 (checkouts/gecko/xpcom/components/nsCategoryManager.cpp:687)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0xEE70E5A: nsXREDirProvider::DoStartup()+442 (checkouts/gecko/toolkit/xre/nsXREDirProvider.cpp:939)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0xEE63E89: XREMain::XRE_mainRun()+1497 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5457)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0xEE64F73: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)+1187 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5907)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0xEE652C9: XRE_main(int, char**, mozilla::BootstrapConfig const&)+153 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5966)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0x12BB53: do_main (checkouts/gecko/browser/app/nsBrowserApp.cpp:225)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==    by 0x12BB53: main+1059 (checkouts/gecko/browser/app/nsBrowserApp.cpp:395)
[task 2022-02-17T20:04:37.892Z] 20:04:37     INFO -  ==11233==
Status: RESOLVED → REOPENED
Flags: needinfo?(aosmond)
Resolution: FIXED → ---
Target Milestone: 99 Branch → ---

There's already a suppression for this one: https://searchfox.org/mozilla-central/rev/8a0c04ef0242679016a086e56cae5d707a224d34/build/valgrind/x86_64-pc-linux-gnu.sup#938-956
But note that the last function in the suppression is _ZN7mozilla2wr12RenderThread5StartEv, while in the error log, it's _ZN7mozilla2wr12RenderThread5StartEj. (v vs. j). The former demangles to mozilla::wr::RenderThread::Start() while the latter demangles to mozilla::wr::RenderThread::Start(unsigned int), and the landed patches are making this function signature change in gfx/webrender_bindings/RenderThread.cpp. IOW, the suppression needs to be updated to reflect the code change.

Attachment #9263564 - Attachment description: Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro → Bug 1754978 - Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles.

Waiting on a green try now.

Flags: needinfo?(aosmond)
Pushed by aosmond@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e499bb902659 Part 1. Refactor CompositableHandle infrastructure to allow in-process driven handles. r=sotaro https://hg.mozilla.org/integration/autoland/rev/844d02ad939d Part 2. Switch WebGPU to use async image pipelines for display. r=kvark
Status: REOPENED → RESOLVED
Closed: 3 years ago3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 99 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: