Closed Bug 1644386 Opened 4 years ago Closed 4 years ago

Intermittent SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/js/src/jsapi.cpp:3093:20 in PropertySpecNameToId(JSContext*, JSPropertySpec::Name, JS::MutableHandle<JS::PropertyKey>, js::PinningBehavior)

Categories

(Core :: Networking, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1629128

People

(Reporter: intermittent-bug-filer, Unassigned, NeedInfo)

References

(Blocks 1 open bug)

Details

(Keywords: intermittent-failure, Whiteboard: [stockwell unknown])

Filed by: rmaries [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=305607160&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/BrgdwBxhQ7iQ1528yc11iw/runs/0/artifacts/public/logs/live_backing.log


[task 2020-06-09T11:09:30.245Z] 11:09:30 INFO - TEST-START | dom/network/tests/test_tcpsocket_not_exposed_to_content.html
[task 2020-06-09T11:09:59.333Z] 11:09:59 INFO - GECKO(2157) | #29 JSAtom* AtomizeUTF8OrWTF8Chars<JS::UTF8Chars>(JSContext*, char const*, unsigned long) /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:1088:10 (libc.so.6+0x21b96)
[task 2020-06-09T11:09:59.334Z] 11:09:59 INFO - GECKO(2157) | SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/js/src/jsapi.cpp:3093:20 in PropertySpecNameToId(JSContext*, JSPropertySpec::Name, JS::MutableHandle<JS::PropertyKey>, js::PinningBehavior)
[task 2020-06-09T11:09:59.334Z] 11:09:59 INFO - GECKO(2157) | ==================
[task 2020-06-09T11:09:59.354Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.354Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.355Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.355Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.355Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.355Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.357Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][RunMessage] Error: Channel error: cannot send/recv
[task 2020-06-09T11:09:59.636Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][MessageChannel] Error: (msgtype=0x390130,name=PContent::Msg_AsyncMessage) Channel error: cannot send/recv
[task 2020-06-09T11:09:59.637Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][MessageChannel] Error: (msgtype=0x390037,name=PContent::Msg_AddPermission) Channel error: cannot send/recv
[task 2020-06-09T11:09:59.637Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][MessageChannel] Error: (msgtype=0x390037,name=PContent::Msg_AddPermission) Channel error: cannot send/recv
[task 2020-06-09T11:09:59.637Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][MessageChannel] Error: (msgtype=0x390037,name=PContent::Msg_AddPermission) Channel error: cannot send/recv
[task 2020-06-09T11:09:59.652Z] 11:09:59 INFO - GECKO(2157) | ###!!! [Parent][MessageChannel] Error: (msgtype=0x390130,name=PContent::Msg_AsyncMessage) Channel error: cannot send/recv
[task 2020-06-09T11:09:59.660Z] 11:09:59 ERROR - GECKO(2157) | A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down
[task 2020-06-09T11:10:02.837Z] 11:10:02 INFO - GECKO(2157) | console.warn: SearchService: "_init: abandoning init due to shutting down"

This is a frequent. Ted, Zibi, does this ring a bell?

WARNING: ThreadSanitizer: data race (pid=4091)
Write of size 8 at 0x7f675beb5b60 by main thread (mutexes: write M3274):
#0 PropertySpecNameToId(JSContext*, JSPropertySpec::Name, JS::MutableHandle<JS::PropertyKey>, js::PinningBehavior) /builds/worker/checkouts/gecko/js/src/jsapi.cpp:3093:20 (libxul.so+0x67d2c60)
#1 JS::PropertySpecNameToPermanentId(JSContext*, JSPropertySpec::Name, JS::PropertyKey*) /builds/worker/checkouts/gecko/js/src/jsapi.cpp:3109:10 (libxul.so+0x665796c)
#2 InitIdsInternal<const JSFunctionSpec> /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:1261:12 (libxul.so+0x6657aca)
#3 mozilla::dom::InitIds(JSContext*, mozilla::dom::NativePropertiesN<7> const*) /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:1290:3 (libxul.so+0x6657aca)
#4 mozilla::dom::FluentBundle_Binding::CreateInterfaceObjects(JSContext*, JS::Handle<JSObject*>, mozilla::dom::ProtoAndIfaceCache&, bool) /builds/worker/workspace/obj-build/dom/bindings/FluentBinding.cpp:1729:10 (libxul.so+0x34f55e6)
#5 mozilla::dom::GetPerInterfaceObjectHandle(JSContext*, unsigned long, void ()(JSContext, JS::Handle<JSObject*>, mozilla::dom::ProtoAndIfaceCache&, bool), bool) /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:4209:5 (libxul.so+0x32c4ca6)
#6 mozilla::dom::WebIDLGlobalNameHash::ResolveForSystemGlobal(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::PropertyKey>, bool*) /builds/worker/checkouts/gecko/dom/bindings/WebIDLGlobalNameHash.cpp:230:9 (libxul.so+0x34fd481)
#7 Resolve /builds/worker/checkouts/gecko/js/xpconnect/src/XPCRuntimeService.cpp:67:7 (libxul.so+0x35070f5)
#8 non-virtual thunk to BackstagePass::Resolve(nsIXPConnectWrappedNative*, JSContext*, JSObject*, JS::PropertyKey, bool*, bool*) /builds/worker/checkouts/gecko/js/xpconnect/src/XPCRuntimeService.cpp (libxul.so+0x35070f5)
#9 XPC_WN_Helper_Resolve(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::PropertyKey>, bool*) /builds/worker/checkouts/gecko/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:789:15 (libxul.so+0x19433fb)
#10 CallResolveOp /builds/worker/checkouts/gecko/js/src/vm/NativeObject-inl.h:641:8 (libxul.so+0x196851f)
#11 LookupOwnPropertyInline<js::CanGC> /builds/worker/checkouts/gecko/js/src/vm/NativeObject-inl.h:723:12 (libxul.so+0x196851f)
#12 LookupPropertyInline<js::CanGC> /builds/worker/checkouts/gecko/js/src/vm/NativeObject-inl.h:793:10 (libxul.so+0x196851f)
#13 js::LookupProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JSObject*>, JS::MutableHandle<JS::PropertyResult>) /builds/worker/checkouts/gecko/js/src/vm/JSObject.cpp:2151:10 (libxul.so+0x196851f)
#14 js::LookupName(JSContext*, JS::Handle<js::PropertyName*>, JS::Handle<JSObject*>, JS::MutableHandle<JSObject*>, JS::MutableHandle<JSObject*>, JS::MutableHandle<JS::PropertyResult>) /builds/worker/checkouts/gecko/js/src/vm/JSObject.cpp:2162:10 (libxul.so+0x682e49c)
#15 bool js::GetEnvironmentName<(js::GetNameMode)0>(JSContext*, JS::Handle<JSObject*>, JS::Handle<js::PropertyName*>, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/Interpreter-inl.h:214:8 (libxul.so+0x682eb4d)
#16 GetNameOperation /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:243:10 (libxul.so+0x65ad3bd)
#17 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3438:12 (libxul.so+0x65ad3bd)
#18 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:458:10 (libxul.so+0x6590221)
#19 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:613:13 (libxul.so+0x658167f)
#20 InternalCall /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:641:10 (libxul.so+0x659a646)
#21 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:658:8 (libxul.so+0x659a646)
#22 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:1678:10 (libxul.so+0x659b0fb)
#23 js::AsyncGeneratorResume(JSContext*, JS::Handle<js::AsyncGeneratorObject*>, js::CompletionKind, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncIteration.cpp:393:8 (libxul.so+0x68e8f75)
#24 js::AsyncGeneratorAwaitedFulfilled(JSContext*, JS::Handle<js::AsyncGeneratorObject*>, JS::Handle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/AsyncIteration.cpp:33:10 (libxul.so+0x66d897f)
#25 AsyncGeneratorPromiseReactionJob /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:1723:14 (libxul.so+0x66d8807)
#26 PromiseReactionJob(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/js/src/builtin/Promise.cpp:1859:12 (libxul.so+0x66d8807)
#27 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:486:13 (libxul.so+0x6793a00)
#28 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:578:12 (libxul.so+0x6793a00)
#29 InternalCall /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:641:10 (libxul.so+0x6599c99)
#30 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:658:8 (libxul.so+0x6599c99)
#31 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/jsapi.cpp:2842:10 (libxul.so+0x659b0fb)
#32 mozilla::dom::PromiseJobCallback::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/PromiseBinding.cpp:28:8 (libxul.so+0x6655dae)
#33 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:91:12 (libxul.so+0x2b1c5fb)
#34 Call /builds/worker/workspace/obj-build/dist/include/mozilla/dom/PromiseBinding.h:104:12 (libxul.so+0x2b1c5fb)
#35 mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:209:18 (libxul.so+0x2b1c5fb)
#36 mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:640:17 (libxul.so+0xa2c7fe)
#37 mozilla::CycleCollectedJSContext::AfterProcessTask(unsigned int) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:459:3 (libxul.so+0xa1a8d7)
#38 XPCJSContext::AfterProcessTask(unsigned int) /builds/worker/checkouts/gecko/js/xpconnect/src/XPCJSContext.cpp:1360:28 (libxul.so+0xa1b207)
#39 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1265:24 (libxul.so+0x193285a)
#40 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:501:10 (libxul.so+0xb167a1)
#41 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:87:21 (libxul.so+0xb1b012)
#42 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:270:30 (libxul.so+0x13e4ae9)
#43 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:315:10 (libxul.so+0x13e54fb)
#44 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:308:3 (libxul.so+0x13e54fb)
#45 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:290:3 (libxul.so+0x13e54fb)
#46 nsBaseAppShell::Run() /builds/worker/checkouts/gecko/widget/nsBaseAppShell.cpp:137:27 (libxul.so+0x1370bfc)
#47 XRE_RunAppShell() /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:913:20 (libxul.so+0x486c553)
#48 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:237:9 (libxul.so+0x646c489)
#49 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:315:10 (libxul.so+0x13e54aa)
#50 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:308:3 (libxul.so+0x13e54aa)
#51 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:290:3 (libxul.so+0x13e54aa)
#52 XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:744:34 (libxul.so+0x1370bfc)
#53 mozilla::BootstrapImpl::XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:67:12 (libxul.so+0x646c209)
#54 content_process_main /builds/worker/checkouts/gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:56:28 (libxul.so+0x64742d2)
#55 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:303:18 (libxul.so+0x64742d2)
#56 __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 (firefox+0xca0c7)
#57 posix_memalign /builds/worker/fetches/llvm-project/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:840:3 (libc.so.6+0x21b96)
Previous read of size 8 at 0x7f675beb5b60 by thread T8:
#0 js::AtomizeUTF8Chars(JSContext*, char const*, unsigned long) /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:1094:10 (libxul.so+0x67e6d00)
#1 atomizeSourceChars /builds/worker/checkouts/gecko/js/src/frontend/TokenStream.h:1696:10 (libxul.so+0x67e6675)
#2 js::frontend::TokenStreamSpecific<mozilla::Utf8Unit, js::frontend::ParserAnyCharsAccess<js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit> > >::identifierName(js::frontend::TokenStart, mozilla::Utf8Unit const*, js::frontend::IdentifierEscapes, js::frontend::Token::Modifier, js::frontend::NameVisibility, js::frontend::TokenKind*) /builds/worker/checkouts/gecko/js/src/frontend/TokenStream.cpp:2250:12 (libxul.so+0x67e6675)
#3 js::frontend::TokenStreamSpecific<mozilla::Utf8Unit, js::frontend::ParserAnyCharsAccess<js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit> > >::getTokenInternal(js::frontend::TokenKind*, js::frontend::Token::Modifier) /builds/worker/checkouts/gecko/js/src/frontend/TokenStream.cpp (libxul.so+0x6ca51cc)
#4 getToken /builds/worker/checkouts/gecko/js/src/frontend/TokenStream.h:2630:12 (libxul.so+0x6ca2f8d)
#5 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::memberExpr(js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::TokenKind, bool, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:9447:24 (libxul.so+0x6ca2f8d)
#6 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::optionalExpr(js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::TokenKind, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:9011:14 (libxul.so+0x6baf9d2)
#7 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::unaryExpr(js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:9206:19 (libxul.so+0x6bae570)
#8 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::orExpr(js::frontend::InHandling, js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:8498:10 (libxul.so+0x6badcd0)
#9 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::condExpr(js::frontend::InHandling, js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:8610:20 (libxul.so+0x6bad3de)
#10 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::assignExpr(js::frontend::InHandling, js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:8760:11 (libxul.so+0x6bad06e)
#11 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::expr(js::frontend::InHandling, js::frontend::YieldHandling, js::frontend::TripledotHandling, js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::PossibleError*, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:8342:13 (libxul.so+0x6ba5fcf)
#12 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::expressionStatement(js::frontend::YieldHandling, js::frontend::ParserBase::InvokedPrediction) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:5796:17 (libxul.so+0x6b93245)
#13 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::statementListItem(js::frontend::YieldHandling, bool) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp (libxul.so+0x6b959a4)
#14 js::frontend::GeneralParser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::statementList(js::frontend::YieldHandling) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:3780:17 (libxul.so+0x6b94f8e)
#15 js::frontend::Parser<js::frontend::FullParseHandler, mozilla::Utf8Unit>::globalBody(js::frontend::GlobalSharedContext*) /builds/worker/checkouts/gecko/js/src/frontend/Parser.cpp:1488:20 (libxul.so+0x6b91609)
#16 js::frontend::ScriptCompiler<mozilla::Utf8Unit>::compileScript(js::frontend::CompilationInfo&, js::frontend::SharedContext*) /builds/worker/checkouts/gecko/js/src/frontend/BytecodeCompiler.cpp:467:20 (libxul.so+0x6c28933)
#17 CreateGlobalScript<mozilla::Utf8Unit> /builds/worker/checkouts/gecko/js/src/frontend/BytecodeCompiler.cpp:188:17 (libxul.so+0x6c6778c)
#18 js::frontend::CompileGlobalScript(js::frontend::CompilationInfo&, js::frontend::GlobalSharedContext&, JS::SourceText<mozilla::Utf8Unit>&) /builds/worker/checkouts/gecko/js/src/frontend/BytecodeCompiler.cpp:230:10 (libxul.so+0x6c6778c)
#19 ScriptParseTask<mozilla::Utf8Unit>::parse(JSContext*) /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:602:7 (libxul.so+0x6c3bc5d)
#20 js::ParseTask::runTask() /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:554:3 (libxul.so+0x675f764)
#21 js::HelperThread::handleParseWorkload(js::AutoLockHelperThreadState&) /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:2238:11 (libxul.so+0x674eafe)
#22 js::HelperThread::threadLoop() /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:2532:5 (libxul.so+0x6757666)
#23 js::HelperThread::ThreadMain(void*) /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:2050:11 (libxul.so+0x6756467)
#24 callMain<0> /builds/worker/checkouts/gecko/js/src/threading/Thread.h:217:5 (libxul.so+0x675285d)
#25 js::detail::ThreadTrampoline<void (&)(void*), js::HelperThread*>::Start(void*) /builds/worker/checkouts/gecko/js/src/threading/Thread.h:206:11 (libxul.so+0x675285d)
#26 __tsan_thread_start_func /builds/worker/fetches/llvm-project/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:957:15 (libxul.so+0x675fd70)
#27 pthread_mutex_init /builds/worker/fetches/llvm-project/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1225:3 (firefox+0x5843c)
Mutex M3274 (0x7b1400026020) created at:
#0 mozilla::detail::MutexImpl::MutexImpl() /builds/worker/checkouts/gecko/mozglue/misc/Mutex_posix.cpp:96:3 (firefox+0x599bd)
#1 MutexImpl /builds/worker/checkouts/gecko/js/src/threading/Mutex.h:39:17 (firefox+0x12a622)
#2 Mutex /builds/worker/checkouts/gecko/js/src/threading/Mutex.h:60:12 (firefox+0x12a622)
#3 Partition /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:350:7 (firefox+0x12a622)
#4 js_new<js::AtomsTable::Partition, unsigned long &> /builds/worker/workspace/obj-build/dist/include/js/Utility.h:537:1 (firefox+0x12a622)
#5 init /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:365:21 (firefox+0x12a622)
#6 JSRuntime::initMainAtomsTables(JSContext*) /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:643:28 (firefox+0x12a622)
#7 JS::InitSelfHostedCode(JSContext*) /builds/worker/checkouts/gecko/js/src/jsapi.cpp:477:34 (libxul.so+0x67d5ba8)
#8 XPCJSContext::Initialize() /builds/worker/checkouts/gecko/js/xpconnect/src/XPCJSContext.cpp:1293:8 (libxul.so+0x6648361)
#9 XPCJSContext::NewXPCJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/XPCJSContext.cpp:1329:23 (libxul.so+0x1931ff3)
#10 nsXPConnect::InitJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/nsXPConnect.cpp:80:25 (libxul.so+0x19326f7)
#11 xpc::InitializeJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/nsXPConnect.cpp:98:35 (libxul.so+0x196c543)
#12 NS_InitXPCOM /builds/worker/checkouts/gecko/xpcom/build/XPCOMInit.cpp:491:5 (libxul.so+0x196c5ff)
#13 XRE_InitEmbedding2(nsIFile*, nsIFile*, nsIDirectoryServiceProvider*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:197:8 (libxul.so+0xb4a89e)
#14 mozilla::ipc::ScopedXREEmbed::Start() /builds/worker/checkouts/gecko/ipc/glue/ScopedXREEmbed.cpp (libxul.so+0x646b9b4)
#15 mozilla::dom::ContentProcess::Init(int, char**) /builds/worker/checkouts/gecko/dom/ipc/ContentProcess.cpp:181:13 (libxul.so+0x13f14a3)
#16 XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:710:21 (libxul.so+0x4431773)
#17 mozilla::BootstrapImpl::XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:67:12 (libxul.so+0x646c1e2)
#18 content_process_main /builds/worker/checkouts/gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:56:28 (libxul.so+0x64742d2)
#19 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:303:18 (libxul.so+0x64742d2)
#20 __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 (firefox+0xca0c7)
#21 setFlagBit /builds/worker/checkouts/gecko/js/src/gc/Cell.h:599:45 (libc.so.6+0x21b96)
#22 setFlagBit /builds/worker/checkouts/gecko/js/src/vm/StringType.h:588:44 (libc.so.6+0x21b96)
#23 setPinned /builds/worker/checkouts/gecko/js/src/vm/StringType.h:1146:5 (libc.so.6+0x21b96)
#24 atomizeAndCopyChars<const unsigned char > /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:787:13 (libc.so.6+0x21b96)
#25 AtomizeAndCopyCharsFromLookup<const unsigned char > /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:721:30 (libc.so.6+0x21b96)
#26 AtomizeAndCopyChars<unsigned char> /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:821:10 (libc.so.6+0x21b96)
#27 js::Atomize(JSContext
, char const
, unsigned long, js::PinningBehavior, mozilla::Maybe<unsigned int> const&) /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:1019:10 (libc.so.6+0x21b96)
Thread T8 'JS Helper' (tid=4114, running) created by main thread at:
#0 js::Thread::create(void* ()(void), void*) /builds/worker/checkouts/gecko/js/src/threading/posix/PosixThread.cpp:52:7 (firefox+0x584db)
#1 bool js::Thread::init<void (&)(void*), js::HelperThread*>(void (&)(void*), js::HelperThread*&&) /builds/worker/checkouts/gecko/js/src/threading/Thread.h:90:12 (libxul.so+0x66b93b1)
#2 js::GlobalHelperThreadState::ensureInitialized() /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:1160:27 (libxul.so+0x6752772)
#3 js::EnsureHelperThreadsInitialized() /builds/worker/checkouts/gecko/js/src/vm/HelperThreads.cpp:94:30 (libxul.so+0x674d36a)
#4 JSRuntime::init(JSContext*, unsigned int) /builds/worker/checkouts/gecko/js/src/vm/Runtime.cpp:200:32 (libxul.so+0x674cfb2)
#5 js::NewContext(unsigned int, JSRuntime*) /builds/worker/checkouts/gecko/js/src/vm/JSContext.cpp:182:17 (libxul.so+0x68c40c2)
#6 JS_NewContext(unsigned int, JSRuntime*) /builds/worker/checkouts/gecko/js/src/jsapi.cpp:394:10 (libxul.so+0x67f5eaf)
#7 mozilla::CycleCollectedJSContext::Initialize(JSRuntime*, unsigned int) /builds/worker/checkouts/gecko/xpcom/base/CycleCollectedJSContext.cpp:123:16 (libxul.so+0x6648074)
#8 XPCJSContext::Initialize() /builds/worker/checkouts/gecko/js/xpconnect/src/XPCJSContext.cpp:1133:32 (libxul.so+0xa1975b)
#9 XPCJSContext::NewXPCJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/XPCJSContext.cpp:1329:23 (libxul.so+0x1931aea)
#10 nsXPConnect::InitJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/nsXPConnect.cpp:80:25 (libxul.so+0x19326f7)
#11 xpc::InitializeJSContext() /builds/worker/checkouts/gecko/js/xpconnect/src/nsXPConnect.cpp:98:35 (libxul.so+0x196c543)
#12 NS_InitXPCOM /builds/worker/checkouts/gecko/xpcom/build/XPCOMInit.cpp:491:5 (libxul.so+0x196c5ff)
#13 XRE_InitEmbedding2(nsIFile*, nsIFile*, nsIDirectoryServiceProvider*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:197:8 (libxul.so+0xb4a89e)
#14 mozilla::ipc::ScopedXREEmbed::Start() /builds/worker/checkouts/gecko/ipc/glue/ScopedXREEmbed.cpp (libxul.so+0x646b9b4)
#15 mozilla::dom::ContentProcess::Init(int, char**) /builds/worker/checkouts/gecko/dom/ipc/ContentProcess.cpp:181:13 (libxul.so+0x13f14a3)
#16 XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:710:21 (libxul.so+0x4431773)
#17 mozilla::BootstrapImpl::XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:67:12 (libxul.so+0x646c1e2)
#18 content_process_main /builds/worker/checkouts/gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:56:28 (libxul.so+0x64742d2)
#19 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:303:18 (libxul.so+0x64742d2)
#20 __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 (firefox+0xca0c7)
#21 lengthField /builds/worker/checkouts/gecko/js/src/gc/Cell.h:593:21 (libc.so.6+0x21b96)
#22 length /builds/worker/checkouts/gecko/js/src/vm/StringType.h:393:42 (libc.so.6+0x21b96)
#23 match /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:129:12 (libc.so.6+0x21b96)
#24 match /builds/worker/workspace/obj-build/dist/include/mozilla/HashTable.h:1716:12 (libc.so.6+0x21b96)
#25 lookup<mozilla::detail::HashTable<const js::AtomStateEntry, mozilla::HashSet<js::AtomStateEntry, js::AtomHasher, js::SystemAllocPolicy>::SetHashPolicy, js::SystemAllocPolicy>::ForAdd> /builds/worker/workspace/obj-build/dist/include/mozilla/HashTable.h:1772:39 (libc.so.6+0x21b96)
#26 lookupForAdd /builds/worker/workspace/obj-build/dist/include/mozilla/HashTable.h:2085:19 (libc.so.6+0x21b96)
#27 lookupForAdd /builds/worker/workspace/obj-build/dist/include/mozilla/HashTable.h:601:18 (libc.so.6+0x21b96)
#28 AtomizeAndCopyCharsFromLookup<const AtomizeUTF8OrWTF8CharsWrapper<JS::UTF8Chars> > /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:684:39 (libc.so.6+0x21b96)
#29 AtomizeAndCopyCharsFromLookup<AtomizeUTF8OrWTF8CharsWrapper<JS::UTF8Chars>, void> /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:656:10 (libc.so.6+0x21b96)
#30 JSAtom
AtomizeUTF8OrWTF8Chars<JS::UTF8Chars>(JSContext*, char const*, unsigned long) /builds/worker/checkouts/gecko/js/src/vm/JSAtom.cpp:1088:10 (libc.so.6+0x21b96)
SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/js/src/jsapi.cpp:3093:20 in PropertySpecNameToId(JSContext*, JSPropertySpec::Name, JS::MutableHandle<JS::PropertyKey>, js::PinningBehavior)

Flags: needinfo?(tcampbell)
Flags: needinfo?(gandalf)

What I think I see happening: on the main thread, we're atomizing and pinning some chars. We don't look in the cache because we're going to pin, we lock the relevant partition, and lookup the atom and write into it to pin it (still with the lock held).

An offthread parse looks up the same atom but does not want to pin it, finds it in the zone cache, so accesses it without locking.

I don't understand the setup well enough to suggest a solution.

Flags: needinfo?(jcoppeard)

It does not. I'm not familiar with this code at all, and I think that FluentBundle is just triggering that error.

If there's anything to fix in FluentBundle, I'd like to know what's the IDL change we need to apply.

Flags: needinfo?(gandalf)

(In reply to Steve Fink [:sfink] [:s:] from comment #5)
That sounds like the problem. The atom's flags are updated with the lock held to mark it as pinned, but are also read without the lock.

I don't think this is a serious problem (the read doesn't pay attention to the pinned flag) and it will go away when stencil lands. We should probably just suppress this.

Flags: needinfo?(jcoppeard)
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → DUPLICATE
Blocks: tsan
You need to log in before you can comment on or make changes to this bug.