Data race in MigrateObject |
||||
Issue description
Found running ToT Chromium. Mlippautz: You seem to have worked in this area, could you take a look? Please let me know if I can help out somehow.
Tsan output:
==================
WARNING: ThreadSanitizer: data race (pid=64504)
Write of size 8 at 0x7f566b5bb3b8 by thread T19:
#0 MigrateObject<v8::internal::MarkCompactCollector::EvacuateVisitorBase::MigrationMode::kFast> v8/src/heap/mark-compact.cc:1680 (chrome+0x1fcb398)
#1 MigrateObject v8/src/heap/mark-compact.cc:1641 (chrome+0x1fcb398)
#2 TryEvacuateObject v8/src/heap/mark-compact.cc:1630 (chrome+0x1fcb398)
#3 Visit v8/src/heap/mark-compact.cc:1906 (chrome+0x1fddd6f)
#4 VisitLiveObjects<v8::internal::MarkCompactCollector::EvacuateOldSpaceVisitor> v8/src/heap/mark-compact.cc:3482 (chrome+0x1fddd6f)
#5 EvacuatePage v8/src/heap/mark-compact.cc:3095 (chrome+0x1fdd6f7)
#6 ProcessPageInParallel v8/src/heap/mark-compact.cc:3191 (chrome+0x1fdd093)
#7 RunInternal v8/src/heap/page-parallel-job.h:161 (chrome+0x1fdd093)
#8 Run v8/src/cancelable-task.h:146 (chrome+0x1adc8d3)
#9 <null> v8/src/cancelable-task.h:? (chrome+0x1adc8d3)
#10 Invoke<v8::Task *> base/bind_internal.h:214 (chrome+0x53bdb85)
#11 MakeItSo<void (v8::Task::*const &)(), v8::Task *> base/bind_internal.h:285 (chrome+0x53bdb85)
#12 RunImpl<void (v8::Task::*const &)(), const std::__1::tuple<base::internal::OwnedWrapper<v8::Task> > &, 0> base/bind_internal.h:361 (chrome+0x53bdb85)
#13 Run base/bind_internal.h:339 (chrome+0x53bdb85)
#14 Run base/callback.h:68 (chrome+0x31ceadd)
#15 ThreadMain base/threading/worker_pool_posix.cc:100 (chrome+0x31ceadd)
#16 ThreadFunc base/threading/platform_thread_posix.cc:71 (chrome+0x31c325d)
Previous atomic read of size 8 at 0x7f566b5bb3b8 by thread T15:
#0 __tsan_atomic64_load ??:? (chrome+0xc1d3e4)
#1 NoBarrier_Load v8/src/base/atomicops_internals_portable.h:161 (chrome+0x1fcd69c)
#2 map_word v8/src/objects-inl.h:1508 (chrome+0x1fcd69c)
#3 cast_gc_safe v8/src/layout-descriptor-inl.h:142 (chrome+0x1fcd69c)
#4 layout_descriptor_gc_safe v8/src/objects-inl.h:5357 (chrome+0x1fcd69c)
#5 LayoutDescriptorHelper v8/src/layout-descriptor-inl.h:230 (chrome+0x1fcd69c)
#6 IterateBodyImpl<v8::internal::RecordMigratedSlotVisitor> v8/src/objects-body-descriptors-inl.h:44 (chrome+0x1fcd69c)
#7 BodyDescriptorApply<v8::internal::CallIterateBody, void, v8::internal::HeapObject *, int, v8::internal::RecordMigratedSlotVisitor *> v8/src/objects-body-descriptors.h:? (chrome+0x1fcd3ac)
#8 IterateBodyFast<v8::internal::RecordMigratedSlotVisitor> v8/src/objects-body-descriptors-inl.h:616 (chrome+0x1fcb2e3)
#9 MigrateObject<v8::internal::MarkCompactCollector::EvacuateVisitorBase::MigrationMode::kFast> v8/src/heap/mark-compact.cc:1661 (chrome+0x1fcb2e3)
#10 MigrateObject v8/src/heap/mark-compact.cc:1641 (chrome+0x1fcb2e3)
#11 TryEvacuateObject v8/src/heap/mark-compact.cc:1630 (chrome+0x1fcb2e3)
#12 Visit v8/src/heap/mark-compact.cc:1906 (chrome+0x1fddd6f)
#13 VisitLiveObjects<v8::internal::MarkCompactCollector::EvacuateOldSpaceVisitor> v8/src/heap/mark-compact.cc:3482 (chrome+0x1fddd6f)
#14 EvacuatePage v8/src/heap/mark-compact.cc:3095 (chrome+0x1fdd6f7)
#15 ProcessPageInParallel v8/src/heap/mark-compact.cc:3191 (chrome+0x1fdd093)
#16 RunInternal v8/src/heap/page-parallel-job.h:161 (chrome+0x1fdd093)
#17 Run v8/src/cancelable-task.h:146 (chrome+0x1adc8d3)
#18 <null> v8/src/cancelable-task.h:? (chrome+0x1adc8d3)
#19 Invoke<v8::Task *> base/bind_internal.h:214 (chrome+0x53bdb85)
#20 MakeItSo<void (v8::Task::*const &)(), v8::Task *> base/bind_internal.h:285 (chrome+0x53bdb85)
#21 RunImpl<void (v8::Task::*const &)(), const std::__1::tuple<base::internal::OwnedWrapper<v8::Task> > &, 0> base/bind_internal.h:361 (chrome+0x53bdb85)
#22 Run base/bind_internal.h:339 (chrome+0x53bdb85)
#23 Run base/callback.h:68 (chrome+0x31ceadd)
#24 ThreadMain base/threading/worker_pool_posix.cc:100 (chrome+0x31ceadd)
#25 ThreadFunc base/threading/platform_thread_posix.cc:71 (chrome+0x31c325d)
Thread T19 'WorkerPool/6452' (tid=64528, running) created by main thread at:
#0 pthread_create ??:? (chrome+0xbe0985)
#1 CreateThread base/threading/platform_thread_posix.cc:110 (chrome+0x31c2d57)
#2 CreateNonJoinableWithPriority base/threading/platform_thread_posix.cc:207 (chrome+0x31c2e98)
#3 CreateNonJoinable base/threading/platform_thread_posix.cc:197 (chrome+0x31c2e98)
#4 AddTask base/threading/worker_pool_posix.cc:157 (chrome+0x31ce474)
#5 PostTask base/threading/worker_pool_posix.cc:142 (chrome+0x31cdf43)
#6 PostTask base/threading/worker_pool_posix.cc:64 (chrome+0x31cdf43)
#7 PostTask base/threading/worker_pool_posix.cc:117 (chrome+0x31cdf43)
#8 CallOnBackgroundThread gin/v8_platform.cc:70 (chrome+0x53bc18f)
#9 Run<(lambda at ../../v8/src/heap/mark-compact.cc:3711:22)> v8/src/heap/page-parallel-job.h:95 (chrome+0x1fdefe3)
#10 UpdatePointersInParallel<v8::internal::PointerDirection::OLD_TO_NEW> v8/src/heap/mark-compact.cc:3711 (chrome+0x1fc7a86)
#11 UpdatePointersAfterEvacuation v8/src/heap/mark-compact.cc:3788 (chrome+0x1fc70ff)
#12 EvacuateNewSpaceAndCandidates v8/src/heap/mark-compact.cc:3539 (chrome+0x1fbaa59)
#13 v8::internal::MarkCompactCollector::CollectGarbage() v8/src/heap/mark-compact.cc:320 (chrome+0x1fb79e9)
#14 MarkCompact v8/src/heap/heap.cc:1473 (chrome+0x1f83358)
#15 PerformGarbageCollection v8/src/heap/heap.cc:1334 (chrome+0x1f80ebd)
#16 CollectGarbage v8/src/heap/heap.cc:1014 (chrome+0x1f7fbf7)
#17 CollectAllGarbage v8/src/heap/heap-inl.h:685 (chrome+0x1f7e2ea)
#18 HandleGCRequest v8/src/heap/heap.cc:796 (chrome+0x1f7e2ea)
#19 HandleInterrupts v8/src/execution.cc:470 (chrome+0x1f152d3)
#20 __RT_impl_Runtime_StackGuard v8/src/runtime/runtime-internal.cc:307 (chrome+0x23458e2)
#21 Runtime_StackGuard v8/src/runtime/runtime-internal.cc:297 (chrome+0x23458e2)
#22 <null> <null> (0x7f56962843fd)
#23 CallInternal v8/src/execution.cc:181 (chrome+0x1f13e9e)
#24 Call v8/src/execution.cc:191 (chrome+0x1f13e9e)
#25 Builtin_Impl_GlobalEval v8/src/builtins/builtins-global.cc:101 (chrome+0x1a69505)
#26 Builtin_GlobalEval v8/src/builtins/builtins-global.cc:85 (chrome+0x1a68ffe)
#27 <null> <null> (0x7f569628419d)
#28 CallInternal v8/src/execution.cc:181 (chrome+0x1f13e9e)
#29 Call v8/src/execution.cc:191 (chrome+0x1f13e9e)
#30 Call v8/src/api.cc:5121 (chrome+0x196c6fa)
#31 callFunction third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp:656 (chrome+0x633e7a3)
#32 callListenerFunction third_party/WebKit/Source/bindings/core/v8/V8EventListener.cpp:112 (chrome+0x635d6e9)
#33 invokeEventHandler third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:142 (chrome+0x635eccb)
#34 handleEvent third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:101 (chrome+0x635eaff)
#35 handleEvent third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:89 (chrome+0x635e992)
#36 fireEventListeners third_party/WebKit/Source/core/events/EventTarget.cpp:712 (chrome+0x6a5cc29)
#37 fireEventListeners third_party/WebKit/Source/core/events/EventTarget.cpp:576 (chrome+0x6a5c155)
#38 dispatchEventInternal third_party/WebKit/Source/core/events/EventTarget.cpp:481 (chrome+0x6a5bfbd)
#39 dispatchEvent third_party/WebKit/Source/core/events/EventTarget.cpp:474 (chrome+0x6a5bf57)
#40 dispatchReadyStateChangeEvent third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp:136 (chrome+0x72d85d5)
#41 dispatchReadyStateChangeEvent third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:545 (chrome+0x72cfbce)
#42 changeState third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:524 (chrome+0x72d51bf)
#43 endLoading third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1664 (chrome+0x72d51bf)
#44 didFinishLoadingInternal third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1594 (chrome+0x72d507a)
#45 didFinishLoading third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1569 (chrome+0x72d4cb8)
#46 non-virtual thunk to blink::XMLHttpRequest::didFinishLoading(unsigned long, double) third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:? (chrome+0x72d50ad)
#47 handleSuccessfulFinish third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:917 (chrome+0x703b774)
#48 notifyFinished third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:894 (chrome+0x703a03a)
#49 non-virtual thunk to blink::DocumentThreadableLoader::notifyFinished(blink::Resource*) third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:? (chrome+0x703b824)
#50 checkNotify third_party/WebKit/Source/platform/loader/fetch/Resource.cpp:367 (chrome+0x2a1e1f1)
#51 finish third_party/WebKit/Source/platform/loader/fetch/Resource.cpp:432 (chrome+0x2a1edd5)
#52 handleLoaderFinish third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp:1201 (chrome+0x2a2d669)
#53 didFinishLoading third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp:431 (chrome+0x2a39902)
#54 OnCompletedRequest content/child/web_url_loader_impl.cc:870 (chrome+0x8f120c6)
#55 OnCompletedRequest content/child/web_url_loader_impl.cc:1022 (chrome+0x8f125c6)
#56 OnRequestComplete content/child/resource_dispatcher.cc:404 (chrome+0x601685b)
#57 DispatchToMethodImpl<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), const std::__1::tuple<int, content::ResourceRequestCompletionStatus> &, 0, 1> base/tuple.h:91 (chrome+0x6018994)
#58 DispatchToMethod<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), const std::__1::tuple<int, content::ResourceRequestCompletionStatus> &> base/tuple.h:98 (chrome+0x6018994)
#59 DispatchToMethod<content::ResourceDispatcher, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), void, std::__1::tuple<int, content::ResourceRequestCompletionStatus> > ipc/ipc_message_templates.h:26 (chrome+0x6018994)
#60 Dispatch<content::ResourceDispatcher, content::ResourceDispatcher, void, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &)> ipc/ipc_message_templates.h:121 (chrome+0x6018994)
#61 DispatchMessage content/child/resource_dispatcher.cc:566 (chrome+0x6013f64)
#62 OnMessageReceived content/child/resource_dispatcher.cc:136 (chrome+0x6013489)
#63 DispatchMessage content/child/resource_scheduling_filter.cc:74 (chrome+0x601a453)
#64 Invoke<const base::WeakPtr<content::ResourceSchedulingFilter> &, const IPC::Message &> base/bind_internal.h:214 (chrome+0x601a732)
#65 MakeItSo<void (content::ResourceSchedulingFilter::*const &)(const IPC::Message &), const base::WeakPtr<content::ResourceSchedulingFilter> &, const IPC::Message &> base/bind_internal.h:305 (chrome+0x601a732)
#66 RunImpl<void (content::ResourceSchedulingFilter::*const &)(const IPC::Message &), const std::__1::tuple<base::WeakPtr<content::ResourceSchedulingFilter>, IPC::Message> &, 0, 1> base/bind_internal.h:361 (chrome+0x601a732)
#67 Run base/bind_internal.h:339 (chrome+0x601a732)
#68 Run base/callback.h:68 (chrome+0x3213c8a)
#69 RunTask base/debug/task_annotator.cc:59 (chrome+0x3213c8a)
#70 ProcessTaskFromWorkQueue third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:533 (chrome+0x61d6b3c)
#71 DoWork third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:331 (chrome+0x61d47e3)
#72 Invoke<const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const bool &> base/bind_internal.h:214 (chrome+0x61d8dbf)
#73 MakeItSo<void (blink::scheduler::TaskQueueManager::*const &)(bool), const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const bool &> base/bind_internal.h:305 (chrome+0x61d8dbf)
#74 RunImpl<void (blink::scheduler::TaskQueueManager::*const &)(bool), const std::__1::tuple<base::WeakPtr<blink::scheduler::TaskQueueManager>, bool> &, 0, 1> base/bind_internal.h:361 (chrome+0x61d8dbf)
#75 Run base/bind_internal.h:339 (chrome+0x61d8dbf)
#76 Run base/callback.h:68 (chrome+0x3213c8a)
#77 RunTask base/debug/task_annotator.cc:59 (chrome+0x3213c8a)
#78 RunTask base/message_loop/message_loop.cc:423 (chrome+0x315a8c2)
#79 DeferOrRunPendingTask base/message_loop/message_loop.cc:434 (chrome+0x315ae8d)
#80 DoWork base/message_loop/message_loop.cc:527 (chrome+0x315b664)
#81 Run base/message_loop/message_pump_default.cc:33 (chrome+0x315f161)
#82 RunHandler base/message_loop/message_loop.cc:387 (chrome+0x315a3ab)
#83 Run base/run_loop.cc:37 (chrome+0x318fbe9)
#84 RendererMain content/renderer/renderer_main.cc:200 (chrome+0x7bb4a6f)
#85 RunZygote content/app/content_main_runner.cc:420 (chrome+0x2bf9afd)
#86 RunNamedProcessTypeMain content/app/content_main_runner.cc:499 (chrome+0x2bfa657)
#87 Run content/app/content_main_runner.cc:836 (chrome+0x2bfb1e4)
#88 ContentMain content/app/content_main.cc:20 (chrome+0x2bf930e)
#89 ChromeMain chrome/app/chrome_main.cc:121 (chrome+0xc3ebfb)
#90 main chrome/app/chrome_exe_main_aura.cc:17 (chrome+0xc3eb4e)
Thread T15 'WorkerPool/6452' (tid=64524, running) created by main thread at:
#0 pthread_create ??:? (chrome+0xbe0985)
#1 CreateThread base/threading/platform_thread_posix.cc:110 (chrome+0x31c2d57)
#2 CreateNonJoinableWithPriority base/threading/platform_thread_posix.cc:207 (chrome+0x31c2e98)
#3 CreateNonJoinable base/threading/platform_thread_posix.cc:197 (chrome+0x31c2e98)
#4 AddTask base/threading/worker_pool_posix.cc:157 (chrome+0x31ce474)
#5 PostTask base/threading/worker_pool_posix.cc:142 (chrome+0x31cdf43)
#6 PostTask base/threading/worker_pool_posix.cc:64 (chrome+0x31cdf43)
#7 PostTask base/threading/worker_pool_posix.cc:117 (chrome+0x31cdf43)
#8 CallOnBackgroundThread gin/v8_platform.cc:70 (chrome+0x53bc18f)
#9 Run<(lambda at ../../v8/src/heap/mark-compact.cc:3270:29)> v8/src/heap/page-parallel-job.h:95 (chrome+0x1fc4a33)
#10 EvacuatePagesInParallel v8/src/heap/mark-compact.cc:3270 (chrome+0x1fc4a33)
#11 EvacuateNewSpaceAndCandidates v8/src/heap/mark-compact.cc:3536 (chrome+0x1fba9f8)
#12 v8::internal::MarkCompactCollector::CollectGarbage() v8/src/heap/mark-compact.cc:320 (chrome+0x1fb79e9)
#13 MarkCompact v8/src/heap/heap.cc:1473 (chrome+0x1f83358)
#14 PerformGarbageCollection v8/src/heap/heap.cc:1334 (chrome+0x1f80ebd)
#15 CollectGarbage v8/src/heap/heap.cc:1014 (chrome+0x1f7fbf7)
#16 CollectAllGarbage v8/src/heap/heap-inl.h:685 (chrome+0x1f7e2ea)
#17 HandleGCRequest v8/src/heap/heap.cc:796 (chrome+0x1f7e2ea)
#18 HandleInterrupts v8/src/execution.cc:470 (chrome+0x1f152d3)
#19 __RT_impl_Runtime_StackGuard v8/src/runtime/runtime-internal.cc:307 (chrome+0x23458e2)
#20 Runtime_StackGuard v8/src/runtime/runtime-internal.cc:297 (chrome+0x23458e2)
#21 <null> <null> (0x7f56962843fd)
#22 CallInternal v8/src/execution.cc:181 (chrome+0x1f13e9e)
#23 Call v8/src/execution.cc:191 (chrome+0x1f13e9e)
#24 Builtin_Impl_GlobalEval v8/src/builtins/builtins-global.cc:101 (chrome+0x1a69505)
#25 Builtin_GlobalEval v8/src/builtins/builtins-global.cc:85 (chrome+0x1a68ffe)
#26 <null> <null> (0x7f569628419d)
#27 CallInternal v8/src/execution.cc:181 (chrome+0x1f13e9e)
#28 Call v8/src/execution.cc:191 (chrome+0x1f13e9e)
#29 Call v8/src/api.cc:5121 (chrome+0x196c6fa)
#30 callFunction third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp:656 (chrome+0x633e7a3)
#31 callListenerFunction third_party/WebKit/Source/bindings/core/v8/V8EventListener.cpp:112 (chrome+0x635d6e9)
#32 invokeEventHandler third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:142 (chrome+0x635eccb)
#33 handleEvent third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:101 (chrome+0x635eaff)
#34 handleEvent third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:89 (chrome+0x635e992)
#35 fireEventListeners third_party/WebKit/Source/core/events/EventTarget.cpp:712 (chrome+0x6a5cc29)
#36 fireEventListeners third_party/WebKit/Source/core/events/EventTarget.cpp:576 (chrome+0x6a5c155)
#37 dispatchEventInternal third_party/WebKit/Source/core/events/EventTarget.cpp:481 (chrome+0x6a5bfbd)
#38 dispatchEvent third_party/WebKit/Source/core/events/EventTarget.cpp:474 (chrome+0x6a5bf57)
#39 dispatchReadyStateChangeEvent third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp:136 (chrome+0x72d85d5)
#40 dispatchReadyStateChangeEvent third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:545 (chrome+0x72cfbce)
#41 changeState third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:524 (chrome+0x72d51bf)
#42 endLoading third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1664 (chrome+0x72d51bf)
#43 didFinishLoadingInternal third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1594 (chrome+0x72d507a)
#44 didFinishLoading third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:1569 (chrome+0x72d4cb8)
#45 non-virtual thunk to blink::XMLHttpRequest::didFinishLoading(unsigned long, double) third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp:? (chrome+0x72d50ad)
#46 handleSuccessfulFinish third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:917 (chrome+0x703b774)
#47 notifyFinished third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:894 (chrome+0x703a03a)
#48 non-virtual thunk to blink::DocumentThreadableLoader::notifyFinished(blink::Resource*) third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp:? (chrome+0x703b824)
#49 checkNotify third_party/WebKit/Source/platform/loader/fetch/Resource.cpp:367 (chrome+0x2a1e1f1)
#50 finish third_party/WebKit/Source/platform/loader/fetch/Resource.cpp:432 (chrome+0x2a1edd5)
#51 handleLoaderFinish third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp:1201 (chrome+0x2a2d669)
#52 didFinishLoading third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp:431 (chrome+0x2a39902)
#53 OnCompletedRequest content/child/web_url_loader_impl.cc:870 (chrome+0x8f120c6)
#54 OnCompletedRequest content/child/web_url_loader_impl.cc:1022 (chrome+0x8f125c6)
#55 OnRequestComplete content/child/resource_dispatcher.cc:404 (chrome+0x601685b)
#56 DispatchToMethodImpl<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), const std::__1::tuple<int, content::ResourceRequestCompletionStatus> &, 0, 1> base/tuple.h:91 (chrome+0x6018994)
#57 DispatchToMethod<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), const std::__1::tuple<int, content::ResourceRequestCompletionStatus> &> base/tuple.h:98 (chrome+0x6018994)
#58 DispatchToMethod<content::ResourceDispatcher, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &), void, std::__1::tuple<int, content::ResourceRequestCompletionStatus> > ipc/ipc_message_templates.h:26 (chrome+0x6018994)
#59 Dispatch<content::ResourceDispatcher, content::ResourceDispatcher, void, void (content::ResourceDispatcher::*)(int, const content::ResourceRequestCompletionStatus &)> ipc/ipc_message_templates.h:121 (chrome+0x6018994)
#60 DispatchMessage content/child/resource_dispatcher.cc:566 (chrome+0x6013f64)
#61 OnMessageReceived content/child/resource_dispatcher.cc:136 (chrome+0x6013489)
#62 DispatchMessage content/child/resource_scheduling_filter.cc:74 (chrome+0x601a453)
#63 Invoke<const base::WeakPtr<content::ResourceSchedulingFilter> &, const IPC::Message &> base/bind_internal.h:214 (chrome+0x601a732)
#64 MakeItSo<void (content::ResourceSchedulingFilter::*const &)(const IPC::Message &), const base::WeakPtr<content::ResourceSchedulingFilter> &, const IPC::Message &> base/bind_internal.h:305 (chrome+0x601a732)
#65 RunImpl<void (content::ResourceSchedulingFilter::*const &)(const IPC::Message &), const std::__1::tuple<base::WeakPtr<content::ResourceSchedulingFilter>, IPC::Message> &, 0, 1> base/bind_internal.h:361 (chrome+0x601a732)
#66 Run base/bind_internal.h:339 (chrome+0x601a732)
#67 Run base/callback.h:68 (chrome+0x3213c8a)
#68 RunTask base/debug/task_annotator.cc:59 (chrome+0x3213c8a)
#69 ProcessTaskFromWorkQueue third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:533 (chrome+0x61d6b3c)
#70 DoWork third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc:331 (chrome+0x61d47e3)
#71 Invoke<const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const bool &> base/bind_internal.h:214 (chrome+0x61d8dbf)
#72 MakeItSo<void (blink::scheduler::TaskQueueManager::*const &)(bool), const base::WeakPtr<blink::scheduler::TaskQueueManager> &, const bool &> base/bind_internal.h:305 (chrome+0x61d8dbf)
#73 RunImpl<void (blink::scheduler::TaskQueueManager::*const &)(bool), const std::__1::tuple<base::WeakPtr<blink::scheduler::TaskQueueManager>, bool> &, 0, 1> base/bind_internal.h:361 (chrome+0x61d8dbf)
#74 Run base/bind_internal.h:339 (chrome+0x61d8dbf)
#75 Run base/callback.h:68 (chrome+0x3213c8a)
#76 RunTask base/debug/task_annotator.cc:59 (chrome+0x3213c8a)
#77 RunTask base/message_loop/message_loop.cc:423 (chrome+0x315a8c2)
#78 DeferOrRunPendingTask base/message_loop/message_loop.cc:434 (chrome+0x315ae8d)
#79 DoWork base/message_loop/message_loop.cc:527 (chrome+0x315b664)
#80 Run base/message_loop/message_pump_default.cc:33 (chrome+0x315f161)
#81 RunHandler base/message_loop/message_loop.cc:387 (chrome+0x315a3ab)
#82 Run base/run_loop.cc:37 (chrome+0x318fbe9)
#83 RendererMain content/renderer/renderer_main.cc:200 (chrome+0x7bb4a6f)
#84 RunZygote content/app/content_main_runner.cc:420 (chrome+0x2bf9afd)
#85 RunNamedProcessTypeMain content/app/content_main_runner.cc:499 (chrome+0x2bfa657)
#86 Run content/app/content_main_runner.cc:836 (chrome+0x2bfb1e4)
#87 ContentMain content/app/content_main.cc:20 (chrome+0x2bf930e)
#88 ChromeMain chrome/app/chrome_main.cc:121 (chrome+0xc3ebfb)
#89 main chrome/app/chrome_exe_main_aura.cc:17 (chrome+0xc3eb4e)
SUMMARY: ThreadSanitizer: data race v8/src/heap/mark-compact.cc:1680 in MigrateObject<v8::internal::MarkCompactCollector::EvacuateVisitorBase::MigrationMode::kFast>
==================
,
Mar 15 2017
Assigning to the current memory sheriff.
,
Mar 15 2017
We use a regular write where we should use a no barrier load at some point during evacuation. Will fix that. Details: We write the forwarding pointer non-atomically when evacuating a layout descriptor in MigrateObject. This should be a non-barrier write.
,
Mar 15 2017
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/387e2aca5e4da925f5d156315485ec27bb88c685 commit 387e2aca5e4da925f5d156315485ec27bb88c685 Author: Michael Lippautz <mlippautz@chromium.org> Date: Wed Mar 15 13:05:16 2017 [heap] Use no barrier store forwarding objects during evacuation This fixes a TSAN data race when writing the forwarding pointer in MigrateObject and reading the object as a LayoutDescriptor when trying to figure out the layout of another object in parallel. BUG= chromium:701732 Change-Id: I1e291fa1afb42771244e1346680164de71c3a838 Reviewed-on: https://chromium-review.googlesource.com/455817 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#43826} [modify] https://crrev.com/387e2aca5e4da925f5d156315485ec27bb88c685/src/heap/mark-compact.cc
,
Mar 15 2017
Thanks for reporting. This should be fixed once the V8 commit rolls into Chromium. |
||||
►
Sign in to add a comment |
||||
Comment 1 by maxmorin@chromium.org
, Mar 15 2017178 KB
178 KB View Download