Closed Bug 1745613 Opened 2 years ago Closed 2 years ago

Intermittent SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:782:22 in nss_Init

Categories

(Core :: DOM: Web Crypto, defect, P5)

defect

Tracking

()

VERIFIED FIXED
97 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox95 --- wontfix
firefox96 --- wontfix
firefox97 --- verified

People

(Reporter: cpeterson, Assigned: cpeterson)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: intermittent-failure, regression)

Attachments

(1 file)

https://hg.mozilla.org/integration/autoland/rev/a1b5d8bd40fc added a new nsID::GenerateUUID() factory function that calls NSS_IsInitialized() to check whether NSS has been initialized. If NSS has been initialized, nsID::GenerateUUID() generates a uses NSS's RNG; if NSS hasn't been initialized, nsID::GenerateUUID() falls back to MFBT's RNG.

The tsan error is that nsID::GenerateUUID() is calling NSS_IsInitialized(), which reads global flag nssIsInitted without acquiring the nssInitLock lock.

I think this data race is harmless because (AFAIK) nsID::GenerateUUID() will never nssIsInitted == PR_TRUE before NSS is initialized. nsID::GenerateUUID() might read stale data and think nssIsInitted == PR_FALSE even though it's PR_TRUE, but that should be harmless because nsID::GenerateUUID() will just use MFBT's RNG when it could have used NSS's now-initialized RNG.

https://searchfox.org/mozilla-central/rev/77efe87174ee82dad43da56d71a717139b9f19ee/security/manager/ssl/nsNSSComponent.cpp#105

Some options:

  1. Make NSS_IsInitialized() acquire the nssInitLock lock, though changing NSS's initialization and locking scares me.
  2. Make nsID::GenerateUUID() always use MFBT's RNG instead of trying to use NSS's RNG, though we'd rather a Mozilla-authored RNG (NSS) instead of an OS RNG (MFBT's).
  3. Make nsID::GenerateUUID() check whether NSS is initalized using some other means, perhaps leveraging something like nsNSSComponent.cpp EnsureNSSInitializedChromeOrContent()?

https://treeherder.mozilla.org/logviewer?job_id=360290581&repo=try&lineNumber=2696

INFO - GECKO(1569) | WARNING: ThreadSanitizer: data race (pid=1569)
INFO - GECKO(1569) |   Write of size 1 at 0x7ff0d80ff300 by main thread (mutexes: write M830486610205774992):
INFO - GECKO(1569) |     #0 nss_Init /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:782:22 (libnss3.so+0x47273)
INFO - GECKO(1569) |     #1 NSS_Initialize /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:889:12 (libnss3.so+0x47457)
INFO - GECKO(1569) |     #2 mozilla::psm::InitializeNSS(nsTSubstring<char> const&, mozilla::psm::NSSDBConfig, mozilla::psm::PKCS11DBConfig) /builds/worker/checkouts/gecko/security/certverifier/NSSCertDBTrustDomain.cpp:1572:7 (libxul.so+0xe2f606)
INFO - GECKO(1569) |     #3 InitializeNSSWithFallbacks /builds/worker/checkouts/gecko/security/manager/ssl/nsNSSComponent.cpp:1780:19 (libxul.so+0x6d0a7fa)
INFO - GECKO(1569) |     #4 nsNSSComponent::InitializeNSS() /builds/worker/checkouts/gecko/security/manager/ssl/nsNSSComponent.cpp:1967:8 (libxul.so+0x6d0a7fa)
INFO - GECKO(1569) |     #5 nsNSSComponent::Init() /builds/worker/checkouts/gecko/security/manager/ssl/nsNSSComponent.cpp:2254:17 (libxul.so+0x6d0d683)
INFO - GECKO(1569) |     #6 mozilla::xpcom::CreateInstanceImpl(mozilla::xpcom::ModuleID, nsISupports*, nsID const&, void**) /builds/worker/workspace/obj-build/xpcom/components/StaticComponents.cpp:11313:7 (libxul.so+0xf3f3cf)
INFO - GECKO(1569) |     #7 mozilla::xpcom::StaticModule::CreateInstance(nsISupports*, nsID const&, void**) const /builds/worker/workspace/obj-build/xpcom/components/StaticComponents.cpp:12154:10 (libxul.so+0xf39dd3)
INFO - GECKO(1569) |     #8 CreateInstance /builds/worker/checkouts/gecko/xpcom/components/nsComponentManager.cpp:177:46 (libxul.so+0xf51128)
INFO - GECKO(1569) |     #9 nsComponentManagerImpl::GetServiceLocked(mozilla::Maybe<mozilla::MonitorAutoLock>&, (anonymous namespace)::EntryWrapper&, nsID const&, void**) /builds/worker/checkouts/gecko/xpcom/components/nsComponentManager.cpp:1276:17 (libxul.so+0xf51128)
INFO - GECKO(1569) |     #10 nsComponentManagerImpl::GetServiceByContractID(char const*, nsID const&, void**) /builds/worker/checkouts/gecko/xpcom/components/nsComponentManager.cpp:1465:10 (libxul.so+0xf51e1c)
INFO - GECKO(1569) |     #11 CallGetService /builds/worker/checkouts/gecko/xpcom/components/nsComponentManagerUtils.cpp:61:43 (libxul.so+0xf54c5e)
INFO - GECKO(1569) |     #12 nsGetServiceByContractID::operator()(nsID const&, void**) const /builds/worker/checkouts/gecko/xpcom/components/nsComponentManagerUtils.cpp:243:21 (libxul.so+0xf54c5e)
INFO - GECKO(1569) |     #13 nsCOMPtr_base::assign_from_gs_contractid(nsGetServiceByContractID, nsID const&) /builds/worker/checkouts/gecko/xpcom/base/nsCOMPtr.cpp:82:7 (libxul.so+0xe8f420)
INFO - GECKO(1569) |     #14 nsCOMPtr /builds/worker/workspace/obj-build/dist/include/nsCOMPtr.h:976:5 (libxul.so+0x6d04af3)
INFO - GECKO(1569) |     #15 EnsureNSSInitializedChromeOrContent() /builds/worker/checkouts/gecko/security/manager/ssl/nsNSSComponent.cpp:131:33 (libxul.so+0x6d04af3)
INFO - GECKO(1569) |     #16 net_EnsurePSMInit() /builds/worker/checkouts/gecko/netwerk/base/nsNetUtil.cpp (libxul.so+0x1139007)
INFO*, nsIChannel**) /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpHandler.cpp:2058:5 (libxul.so+0x153ff24)
INFO*, nsIChannel**) /builds/worker/checkouts/gecko/netwerk/base/nsIOService.cpp:1111:15 (libxul.so+0x1117a73)
INFO - GECKO(1569) |     #19 NewChannelFromURIWithProxyFlagsInternal /builds/worker/checkouts/gecko/netwerk/base/nsIOService.cpp:1083:10 (libxul.so+0x11177c8)
INFO> const&, mozilla::Maybe<mozilla::dom::ServiceWorkerDescriptor> const&, unsigned int, nsIContentPolicy::nsContentPolicyType, unsigned int, nsIChannel**) /builds/worker/checkouts/gecko/netwerk/base/nsIOService.cpp:1055:10 (libxul.so+0x11177c8)
INFO> const&, mozilla::Maybe<mozilla::dom::ServiceWorkerDescriptor> const&, unsigned int, nsIContentPolicy::nsContentPolicyType, nsICookieJarSettings*, mozilla::dom::PerformanceStorage*, nsILoadGroup*, nsIInterfaceRequestor*, unsigned int, nsIIOService*, unsigned int) /builds/worker/checkouts/gecko/netwerk/base/nsNetUtil.cpp:437:20 (libxul.so+0x1130bd7)
INFO - GECKO(1569) |     #22 NS_NewChannel(nsIChannel**, nsIURI*, nsIPrincipal*, unsigned int, nsIContentPolicy::nsContentPolicyType, nsICookieJarSettings*, mozilla::dom::PerformanceStorage*, nsILoadGroup*, nsIInterfaceRequestor*, unsigned int, nsIIOService*, unsigned int) /builds/worker/checkouts/gecko/netwerk/base/nsNetUtil.cpp:378:10 (libxul.so+0x111c34f)
INFO - GECKO(1569) |     #23 mozilla::dom::XMLHttpRequestMainThread::CreateChannel() /builds/worker/checkouts/gecko/dom/xhr/XMLHttpRequestMainThread.cpp:2455:10 (libxul.so+0x4e22e15)
INFO - GECKO(1569) |     #24 mozilla::dom::XMLHttpRequestMainThread::Open(nsTSubstring<char> const&, nsTSubstring<char> const&, bool, nsTSubstring<char16_t> const&, nsTSubstring<char16_t> const&, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/xhr/XMLHttpRequestMainThread.cpp:1528:3 (libxul.so+0x4e22a25)
INFO - GECKO(1569) |     #25 mozilla::dom::XMLHttpRequestMainThread::Open(nsTSubstring<char> const&, nsTSubstring<char16_t> const&, bool, nsTSubstring<char16_t> const&, nsTSubstring<char16_t> const&, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/xhr/XMLHttpRequestMainThread.cpp:1383:3 (libxul.so+0x4e2202a)
INFO - GECKO(1569) |     #26 mozilla::dom::XMLHttpRequest_Binding::open(JSContext*, JS::Handle<JSObject*>, void*, JSJitMethodCallArgs const&) /builds/worker/workspace/obj-build/dom/bindings/XMLHttpRequestBinding.cpp:1048:28 (libxul.so+0x350429b)
INFO - GECKO(1569) |     #27 bool mozilla::dom::binding_detail::GenericMethod<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:3306:13 (libxul.so+0x393786e)
INFO - GECKO(1569) |     #28 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #29 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:475:12 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #30 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #31 CallFromStack /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:539:10 (libxul.so+0x711ff23)
INFO - GECKO(1569) |     #32 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3243:16 (libxul.so+0x711ff23)
INFO - GECKO(1569) |     #33 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:357:13 (libxul.so+0x71137e6)
INFO - GECKO(1569) |     #34 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #35 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #36 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #37 js::PromiseObject::create(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSObject*>, bool) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2857:15 (libxul.so+0x73115a7)
INFO - GECKO(1569) |     #38 PromiseConstructor(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2768:7 (libxul.so+0x7341444)
INFO - GECKO(1569) |     #39 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #40 CallJSNativeConstructor /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:404:8 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #41 InternalConstruct(JSContext*, js::AnyConstructArgs const&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:580:14 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #42 ConstructFromStack /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:626:10 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #43 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3233:16 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #44 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:357:13 (libxul.so+0x71137e6)
INFO - GECKO(1569) |     #45 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #46 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #47 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #48 js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/SelfHosting.cpp:1538:10 (libxul.so+0x741e305)
INFO - GECKO(1569) |     #49 js::jit::InterpretResume(JSContext*, JS::Handle<JSObject*>, JS::Value*, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/jit/VMFunctions.cpp:1093:10 (libxul.so+0x795cede)
INFO - GECKO(1569) |     #50 <null> <null> (0x7ff0376a99d0)
INFO - GECKO(1569) |     #51 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:347:32 (libxul.so+0x71136f5)
INFO - GECKO(1569) |     #52 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #53 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #54 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #55 js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/SelfHosting.cpp:1538:10 (libxul.so+0x741e305)
INFO - GECKO(1569) |     #56 AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, ResumeKind, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:152:8 (libxul.so+0x7241dba)
INFO - GECKO(1569) |     #57 js::AsyncFunctionAwaitedFulfilled(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:193:10 (libxul.so+0x7241b37)
INFO - GECKO(1569) |     #58 AsyncFunctionPromiseReactionJob /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2000:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #59 PromiseReactionJob(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2160:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #60 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #61 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:475:12 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #62 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #63 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #64 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/CallAndConstruct.cpp:117:10 (libxul.so+0x725b6a8)
INFO - GECKO(1569) |     #65 mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/PromiseBinding.cpp:35:8 (libxul.so+0x2eddade)
INFO - GECKO(1569) |     #66 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:89:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #67 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:102:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #68 mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:213:18 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #69 mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:674:17 (libxul.so+0xe6a804)
INFO - GECKO(1569) |     #70 LeaveMicroTask /builds/worker/workspace/obj-build/dist/include/mozilla/CycleCollectedJSContext.h:243:7 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #71 ~nsAutoMicroTask /builds/worker/workspace/obj-build/dist/include/mozilla/CycleCollectedJSContext.h:395:13 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #72 mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener*, mozilla::dom::Event*, mozilla::dom::EventTarget*) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1311:3 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #73 mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event**, mozilla::dom::EventTarget*, nsEventStatus*, bool) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1500:17 (libxul.so+0x3dc787b)
INFO - GECKO(1569) |     #74 HandleEvent /builds/worker/checkouts/gecko/dom/events/EventListenerManager.h:395:5 (libxul.so+0x3dbdabe)
INFO - GECKO(1569) |     #75 mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor&, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:348:17 (libxul.so+0x3dbdabe)
INFO - GECKO(1569) |     #76 mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:550:16 (libxul.so+0x3dbce49)
INFO - GECKO(1569) |     #77 mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget*>*) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:1085:11 (libxul.so+0x3dbfc05)
INFO - GECKO(1569) |     #78 mozilla::EventDispatcher::DispatchDOMEvent(nsISupports*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsPresContext*, nsEventStatus*) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp (libxul.so+0x3dc2550)
INFO - GECKO(1569) |     #79 mozilla::DOMEventTargetHelper::DispatchEvent(mozilla::dom::Event&, mozilla::dom::CallerType, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/events/DOMEventTargetHelper.cpp:181:17 (libxul.so+0x3d99a86)
INFO - GECKO(1569) |     #80 mozilla::dom::EventTarget::DispatchEvent(mozilla::dom::Event&) /builds/worker/checkouts/gecko/dom/events/EventTarget.cpp:180:13 (libxul.so+0x3dce0e6)
INFO - GECKO(1569) |     #81 mozilla::dom::MessageEventRunnable::DispatchDOMEvent(JSContext*, mozilla::dom::WorkerPrivate*, mozilla::DOMEventTargetHelper*, bool) /builds/worker/checkouts/gecko/dom/workers/MessageEventRunnable.cpp:106:12 (libxul.so+0x4c1c323)
INFO - GECKO(1569) |     #82 mozilla::dom::MessageEventRunnable::WorkerRun(JSContext*, mozilla::dom::WorkerPrivate*) /builds/worker/checkouts/gecko/dom/workers/MessageEventRunnable.cpp (libxul.so+0x4c1c840)
INFO - GECKO(1569) |     #83 mozilla::dom::WorkerRunnable::Run() /builds/worker/checkouts/gecko/dom/workers/WorkerRunnable.cpp:378:12 (libxul.so+0x4c5d4e6)
INFO - GECKO(1569) |     #84 mozilla::ThrottledEventQueue::Inner::ExecuteRunnable() /builds/worker/checkouts/gecko/xpcom/threads/ThrottledEventQueue.cpp:254:22 (libxul.so+0xf8f314)
INFO - GECKO(1569) |     #85 mozilla::ThrottledEventQueue::Inner::Executor::Run() /builds/worker/checkouts/gecko/xpcom/threads/ThrottledEventQueue.cpp:81:15 (libxul.so+0xf8ba1f)
INFO - GECKO(1569) |     #86 mozilla::RunnableTask::Run() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:468:16 (libxul.so+0xf8d477)
INFO - GECKO(1569) |     #87 mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:771:26 (libxul.so+0xf6883d)
INFO - GECKO(1569) |     #88 mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:607:15 (libxul.so+0xf66f16)
INFO - GECKO(1569) |     #89 mozilla::TaskController::ProcessPendingMTTask(bool) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:391:36 (libxul.so+0xf671f2)
INFO - GECKO(1569) |     #90 operator() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:124:37 (libxul.so+0xf911d7)
INFO - GECKO(1569) |     #91 mozilla::detail::RunnableFunction<mozilla::TaskController::InitializeInternal()::$_0>::Run() /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.h:531:5 (libxul.so+0xf911d7)
INFO - GECKO(1569) |     #92 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1183:16 (libxul.so+0xf7b0f3)
INFO - GECKO(1569) |     #93 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:467:10 (libxul.so+0xf81e42)
INFO - GECKO(1569) |     #94 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:85:21 (libxul.so+0x18f0c1d)
INFO - GECKO(1569) |     #95 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:331:10 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #96 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:324:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #97 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:306:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #98 nsBaseAppShell::Run() /builds/worker/checkouts/gecko/widget/nsBaseAppShell.cpp:137:27 (libxul.so+0x5026026)
INFO - GECKO(1569) |     #99 nsAppStartup::Run() /builds/worker/checkouts/gecko/toolkit/components/startup/nsAppStartup.cpp:295:30 (libxul.so+0x6ecd688)
INFO - GECKO(1569) |     #100 XREMain::XRE_mainRun() /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5316:22 (libxul.so+0x6fea20f)
INFO - GECKO(1569) |     #101 XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5501:8 (libxul.so+0x6feb096)
INFO - GECKO(1569) |     #102 XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5560:21 (libxul.so+0x6feb664)
INFO - GECKO(1569) |     #103 mozilla::BootstrapImpl::XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:45:12 (libxul.so+0x6ff5fe2)
INFO - GECKO(1569) |     #104 do_main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:225:22 (firefox+0xcf494)
INFO - GECKO(1569) |     #105 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:395:16 (firefox+0xcf494)
INFO - GECKO(1569) |   Previous read of size 1 at 0x7ff0d80ff300 by thread T44:
INFO - GECKO(1569) |     #0 NSS_IsInitialized /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:1304:13 (libnss3.so+0x47af6)
INFO - GECKO(1569) |     #1 GenerateRandomBytesFromNSS /builds/worker/checkouts/gecko/xpcom/base/nsID.cpp:28:8 (libxul.so+0xe9fd5b)
INFO - GECKO(1569) |     #2 nsID::GenerateUUIDInPlace(nsID&) /builds/worker/checkouts/gecko/xpcom/base/nsID.cpp:48:8 (libxul.so+0xe9fd5b)
INFO - GECKO(1569) |     #3 nsUUIDGenerator::GenerateUUIDInPlace(nsID*) /builds/worker/checkouts/gecko/xpcom/base/nsUUIDGenerator.cpp:29:10 (libxul.so+0xeba8c5)
INFO - GECKO(1569) |     #4 mozilla::dom::IDBFactory::OpenInternal(JSContext*, nsIPrincipal*, nsTSubstring<char16_t> const&, mozilla::dom::Optional<unsigned long> const&, mozilla::dom::Optional<mozilla::dom::StorageType> const&, bool, mozilla::dom::CallerType, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/indexedDB/IDBFactory.cpp:645:7 (libxul.so+0x4abb7e4)
INFO - GECKO(1569) |     #5 mozilla::dom::IDBFactory::Open(JSContext*, nsTSubstring<char16_t> const&, unsigned long, mozilla::dom::CallerType, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/indexedDB/IDBFactory.cpp:397:10 (libxul.so+0x4abb1db)
INFO - GECKO(1569) |     #6 mozilla::dom::IDBFactory_Binding::open(JSContext*, JS::Handle<JSObject*>, void*, JSJitMethodCallArgs const&) /builds/worker/workspace/obj-build/dom/bindings/IDBFactoryBinding.cpp:235:87 (libxul.so+0x391f131)
INFO - GECKO(1569) |     #7 bool mozilla::dom::binding_detail::GenericMethod<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:3306:13 (libxul.so+0x393786e)
INFO - GECKO(1569) |     #8 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #9 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:475:12 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #10 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #11 CallFromStack /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:539:10 (libxul.so+0x711ff23)
INFO - GECKO(1569) |     #12 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3243:16 (libxul.so+0x711ff23)
INFO - GECKO(1569) |     #13 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:357:13 (libxul.so+0x71137e6)
INFO - GECKO(1569) |     #14 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #15 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #16 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #17 js::PromiseObject::create(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSObject*>, bool) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2857:15 (libxul.so+0x73115a7)
INFO - GECKO(1569) |     #18 PromiseConstructor(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2768:7 (libxul.so+0x7341444)
INFO - GECKO(1569) |     #19 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #20 CallJSNativeConstructor /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:404:8 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #21 InternalConstruct(JSContext*, js::AnyConstructArgs const&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:580:14 (libxul.so+0x712b7ac)
INFO - GECKO(1569) |     #22 ConstructFromStack /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:626:10 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #23 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3233:16 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #24 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:357:13 (libxul.so+0x71137e6)
INFO - GECKO(1569) |     #25 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #26 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #27 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #28 js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/SelfHosting.cpp:1538:10 (libxul.so+0x741e305)
INFO - GECKO(1569) |     #29 AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, ResumeKind, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:152:8 (libxul.so+0x7241dba)
INFO - GECKO(1569) |     #30 js::AsyncFunctionAwaitedFulfilled(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:193:10 (libxul.so+0x7241b37)
INFO - GECKO(1569) |     #31 AsyncFunctionPromiseReactionJob /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2000:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #32 PromiseReactionJob(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2160:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #33 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #34 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:475:12 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #35 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #36 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #37 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/CallAndConstruct.cpp:117:10 (libxul.so+0x725b6a8)
INFO - GECKO(1569) |     #38 mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/PromiseBinding.cpp:35:8 (libxul.so+0x2eddade)
INFO - GECKO(1569) |     #39 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:89:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #40 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:102:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #41 mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:213:18 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #42 mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:674:17 (libxul.so+0xe6a804)
INFO - GECKO(1569) |     #43 mozilla::CycleCollectedJSContext::AfterProcessTask(unsigned int) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:463:3 (libxul.so+0xe6b197)
INFO - GECKO(1569) |     #44 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1220:24 (libxul.so+0xf7b61a)
INFO - GECKO(1569) |     #45 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:467:10 (libxul.so+0xf81e42)
INFO - GECKO(1569) |     #46 mozilla::dom::WorkerPrivate::DoRunLoop(JSContext*) /builds/worker/checkouts/gecko/dom/workers/WorkerPrivate.cpp:3103:7 (libxul.so+0x4c4f4b2)
INFO - GECKO(1569) |     #47 mozilla::dom::workerinternals::(anonymous namespace)::WorkerThreadPrimaryRunnable::Run() /builds/worker/checkouts/gecko/dom/workers/RuntimeService.cpp:2220:42 (libxul.so+0x4c32ff1)
INFO - GECKO(1569) |     #48 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1177:16 (libxul.so+0xf7b313)
INFO - GECKO(1569) |     #49 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:467:10 (libxul.so+0xf81e42)
INFO - GECKO(1569) |     #50 mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:300:20 (libxul.so+0x18f17be)
INFO - GECKO(1569) |     #51 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:331:10 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #52 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:324:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #53 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:306:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #54 nsThread::ThreadFunc(void*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:391:10 (libxul.so+0xf77405)
INFO - GECKO(1569) |     #55 _pt_root /builds/worker/checkouts/gecko/nsprpub/pr/src/pthreads/ptthread.c:201:5 (libnspr4.so+0x44fbd)
INFO - GECKO(1569) |   Location is global 'nssIsInitted' of size 1 at 0x7ff0d80ff300 (libnss3.so+0x0000000e4300)
INFO - GECKO(1569) |   Mutex M830486610205774992 is already destroyed.
INFO - GECKO(1569) |   Thread T44 'DOM Worker' (tid=1629, running) created by main thread at:
INFO - GECKO(1569) |     #0 pthread_create /builds/worker/fetches/llvm-project/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:977:3 (firefox+0x5919d)
INFO - GECKO(1569) |     #1 _PR_CreateThread /builds/worker/checkouts/gecko/nsprpub/pr/src/pthreads/ptthread.c:458:14 (libnspr4.so+0x3c1a5)
INFO - GECKO(1569) |     #2 PR_CreateThread /builds/worker/checkouts/gecko/nsprpub/pr/src/pthreads/ptthread.c:533:12 (libnspr4.so+0x30cf5)
INFO - GECKO(1569) |     #3 nsThread::Init(nsTSubstring<char> const&) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:615:18 (libxul.so+0xf78a55)
INFO - GECKO(1569) |     #4 mozilla::dom::WorkerThread::Create(mozilla::dom::WorkerThreadFriendKey const&) /builds/worker/checkouts/gecko/dom/workers/WorkerThread.cpp:102:7 (libxul.so+0x4c66d11)
INFO - GECKO(1569) |     #5 mozilla::dom::workerinternals::RuntimeService::ScheduleWorker(mozilla::dom::WorkerPrivate&) /builds/worker/checkouts/gecko/dom/workers/RuntimeService.cpp:1365:14 (libxul.so+0x4c1f589)
INFO - GECKO(1569) |     #6 mozilla::dom::workerinternals::RuntimeService::RegisterWorker(mozilla::dom::WorkerPrivate&) /builds/worker/checkouts/gecko/dom/workers/RuntimeService.cpp:1232:19 (libxul.so+0x4c1e94a)
INFO*, mozilla::ErrorResult&, nsTString<char16_t>) /builds/worker/checkouts/gecko/dom/workers/WorkerPrivate.cpp:2518:24 (libxul.so+0x4c4c7f4)
INFO - GECKO(1569) |     #8 mozilla::dom::ChromeWorker::Constructor(mozilla::dom::GlobalObject const&, nsTSubstring<char16_t> const&, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/workers/ChromeWorker.cpp:22:41 (libxul.so+0x4c1a3bd)
INFO - GECKO(1569) |     #9 mozilla::dom::ChromeWorker_Binding::_constructor(JSContext*, unsigned int, JS::Value*) /builds/worker/workspace/obj-build/dom/bindings/WorkerBinding.cpp:244:58 (libxul.so+0x34e6eba)
INFO - GECKO(1569) |     #10 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712bc1c)
INFO - GECKO(1569) |     #11 CallJSNativeConstructor /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:404:8 (libxul.so+0x712bc1c)
INFO - GECKO(1569) |     #12 InternalConstruct(JSContext*, js::AnyConstructArgs const&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:599:10 (libxul.so+0x712bc1c)
INFO - GECKO(1569) |     #13 ConstructFromStack /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:626:10 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #14 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3233:16 (libxul.so+0x711ff91)
INFO - GECKO(1569) |     #15 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:357:13 (libxul.so+0x71137e6)
INFO - GECKO(1569) |     #16 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #17 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #18 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #19 js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/SelfHosting.cpp:1538:10 (libxul.so+0x741e305)
INFO - GECKO(1569) |     #20 js::jit::InterpretResume(JSContext*, JS::Handle<JSObject*>, JS::Value*, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/jit/VMFunctions.cpp:1093:10 (libxul.so+0x795cede)
INFO - GECKO(1569) |     #21 <null> <null> (0x7ff0376a99d0)
INFO - GECKO(1569) |     #22 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:347:32 (libxul.so+0x71136f5)
INFO - GECKO(1569) |     #23 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:507:13 (libxul.so+0x712a199)
INFO - GECKO(1569) |     #24 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #25 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #26 js::CallSelfHostedFunction(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/SelfHosting.cpp:1538:10 (libxul.so+0x741e305)
INFO - GECKO(1569) |     #27 AsyncFunctionResume(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, ResumeKind, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:152:8 (libxul.so+0x7241dba)
INFO - GECKO(1569) |     #28 js::AsyncFunctionAwaitedFulfilled(JSContext*, JS::Handle<js::AsyncFunctionGeneratorObject*>, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncFunction.cpp:193:10 (libxul.so+0x7241b37)
INFO - GECKO(1569) |     #29 AsyncFunctionPromiseReactionJob /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2000:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #30 PromiseReactionJob(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:2160:12 (libxul.so+0x7347034)
INFO - GECKO(1569) |     #31 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:388:13 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #32 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:475:12 (libxul.so+0x712a012)
INFO - GECKO(1569) |     #33 InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:535:10 (libxul.so+0x712b04e)
INFO - GECKO(1569) |     #34 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:552:8 (libxul.so+0x712b12a)
INFO - GECKO(1569) |     #35 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/CallAndConstruct.cpp:117:10 (libxul.so+0x725b6a8)
INFO - GECKO(1569) |     #36 mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/PromiseBinding.cpp:35:8 (libxul.so+0x2eddade)
INFO - GECKO(1569) |     #37 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:89:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #38 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:102:12 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #39 mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:213:18 (libxul.so+0xe7cb9e)
INFO - GECKO(1569) |     #40 mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:674:17 (libxul.so+0xe6a804)
INFO - GECKO(1569) |     #41 LeaveMicroTask /builds/worker/workspace/obj-build/dist/include/mozilla/CycleCollectedJSContext.h:243:7 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #42 ~nsAutoMicroTask /builds/worker/workspace/obj-build/dist/include/mozilla/CycleCollectedJSContext.h:395:13 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #43 mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener*, mozilla::dom::Event*, mozilla::dom::EventTarget*) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1311:3 (libxul.so+0x3dc6dda)
INFO - GECKO(1569) |     #44 mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event**, mozilla::dom::EventTarget*, nsEventStatus*, bool) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1500:17 (libxul.so+0x3dc787b)
INFO - GECKO(1569) |     #45 HandleEvent /builds/worker/checkouts/gecko/dom/events/EventListenerManager.h:395:5 (libxul.so+0x3dbdabe)
INFO - GECKO(1569) |     #46 mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor&, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:348:17 (libxul.so+0x3dbdabe)
INFO - GECKO(1569) |     #47 mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:550:16 (libxul.so+0x3dbce49)
INFO - GECKO(1569) |     #48 mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget*>*) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:1085:11 (libxul.so+0x3dbfc05)
INFO - GECKO(1569) |     #49 mozilla::EventDispatcher::DispatchDOMEvent(nsISupports*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsPresContext*, nsEventStatus*) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp (libxul.so+0x3dc2550)
INFO - GECKO(1569) |     #50 mozilla::DOMEventTargetHelper::DispatchEvent(mozilla::dom::Event&, mozilla::dom::CallerType, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/events/DOMEventTargetHelper.cpp:181:17 (libxul.so+0x3d99a86)
INFO - GECKO(1569) |     #51 mozilla::dom::EventTarget::DispatchEvent(mozilla::dom::Event&, mozilla::ErrorResult&) /builds/worker/checkouts/gecko/dom/events/EventTarget.cpp:186:13 (libxul.so+0x3dce176)
INFO - GECKO(1569) |     #52 mozilla::dom::IDBTransaction::FireCompleteOrAbortEvents(nsresult) /builds/worker/checkouts/gecko/dom/indexedDB/IDBTransaction.cpp:803:3 (libxul.so+0x4ae754d)
INFO - GECKO(1569) |     #53 mozilla::dom::indexedDB::BackgroundTransactionChild::RecvComplete(nsresult) /builds/worker/checkouts/gecko/dom/indexedDB/ActorsChild.cpp:2054:17 (libxul.so+0x4a9dac6)
INFO - GECKO(1569) |     #54 mozilla::dom::indexedDB::PBackgroundIDBTransactionChild::OnMessageReceived(IPC::Message const&) /builds/worker/workspace/obj-build/ipc/ipdl/PBackgroundIDBTransactionChild.cpp:489:81 (libxul.so+0x1df2bf8)
INFO - GECKO(1569) |     #55 mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) /builds/worker/workspace/obj-build/ipc/ipdl/PBackgroundChild.cpp:6090:32 (libxul.so+0x1b872f1)
INFO - GECKO(1569) |     #56 mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:2043:25 (libxul.so+0x18ecd3e)
INFO - GECKO(1569) |     #57 mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:1968:9 (libxul.so+0x18eb255)
INFO - GECKO(1569) |     #58 mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:1827:3 (libxul.so+0x18ebe4a)
INFO - GECKO(1569) |     #59 mozilla::ipc::MessageChannel::MessageTask::Run() /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:1855:14 (libxul.so+0x18ec445)
INFO - GECKO(1569) |     #60 mozilla::RunnableTask::Run() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:468:16 (libxul.so+0xf8d477)
INFO - GECKO(1569) |     #61 mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:771:26 (libxul.so+0xf6883d)
INFO - GECKO(1569) |     #62 mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:607:15 (libxul.so+0xf66f16)
INFO - GECKO(1569) |     #63 mozilla::TaskController::ProcessPendingMTTask(bool) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:391:36 (libxul.so+0xf671f2)
INFO - GECKO(1569) |     #64 operator() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:124:37 (libxul.so+0xf911d7)
INFO - GECKO(1569) |     #65 mozilla::detail::RunnableFunction<mozilla::TaskController::InitializeInternal()::$_0>::Run() /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.h:531:5 (libxul.so+0xf911d7)
INFO - GECKO(1569) |     #66 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1183:16 (libxul.so+0xf7b0f3)
INFO - GECKO(1569) |     #67 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:467:10 (libxul.so+0xf81e42)
INFO - GECKO(1569) |     #68 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:85:21 (libxul.so+0x18f0c1d)
INFO - GECKO(1569) |     #69 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:331:10 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #70 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:324:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #71 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:306:3 (libxul.so+0x186ad9c)
INFO - GECKO(1569) |     #72 nsBaseAppShell::Run() /builds/worker/checkouts/gecko/widget/nsBaseAppShell.cpp:137:27 (libxul.so+0x5026026)
INFO - GECKO(1569) |     #73 nsAppStartup::Run() /builds/worker/checkouts/gecko/toolkit/components/startup/nsAppStartup.cpp:295:30 (libxul.so+0x6ecd688)
INFO - GECKO(1569) |     #74 XREMain::XRE_mainRun() /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5316:22 (libxul.so+0x6fea20f)
INFO - GECKO(1569) |     #75 XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5501:8 (libxul.so+0x6feb096)
INFO - GECKO(1569) |     #76 XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5560:21 (libxul.so+0x6feb664)
INFO - GECKO(1569) |     #77 mozilla::BootstrapImpl::XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:45:12 (libxul.so+0x6ff5fe2)
INFO - GECKO(1569) |     #78 do_main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:225:22 (firefox+0xcf494)
INFO - GECKO(1569) |     #79 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:395:16 (firefox+0xcf494)
INFO - GECKO(1569) | SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:782:22 in nss_Init
Blocks: tsan
Summary: ThreadSanitizer: data race /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:782:22 in nss_Init → Intermittent SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/security/nss/lib/nss/nssinit.c:782:22 in nss_Init

I reproduced this tsan failure in 1 out of 10 retriggers of mach try fuzzy --query "test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc".

Calling NSS_IsInitialized() off the main thread caused intermittent tsan failures because NSS_IsInitialized() reads global variable nssIsInitted without acquiring the nssInitLock lock.

During Firefox startup, about 1000 nsIDs are generated, but only about 10 are generated off the main thread, so this change has very little impact on how often nsID::GenerateUUID() will use NSS's RNG. Of the nsIDs generated on the main thread during startup, about 600 are generated before NSS is initialized (so they use MFBT's RNG) and 400 are generated after NSS is initialized.

After Firefox reaches a steady state, loading a light web page like google.com generates about 300 nsIDs and a heavy web page like cnn.com generates about 2000 nsIDs. All these nsIDs are generated on the main thread using NSS's RNG.

Assignee: nobody → cpeterson
Status: NEW → ASSIGNED
Pushed by cpeterson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f00f297558ab
Change nsID::GenerateUUID() to not use NSS's RNG off the main thread. r=keeler
Pushed by cpeterson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/d3cb31c2736b
Change nsID::GenerateUUID() to not use NSS's RNG off the main thread. r=keeler
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 97 Branch

Fixed in 97. Too late to uplift to Beta 96.

Flags: needinfo?(cpeterson)

(In reply to Intermittent Failures Robot from comment #11)

7 failures in 2801 pushes (0.002 failures/push) were associated with this bug in the last 7 days.
...
For more details, see:
https://treeherder.mozilla.org/intermittent-failures/bugdetails?bug=1745613&startday=2022-01-03&endday=2022-01-09&tree=all

These failures all occurred before my fix landed on 2022-01-05.

Status: RESOLVED → VERIFIED
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: