Chromium Code Reviews
DescriptionRevert of Trace FrameTreeNode Snapshots (patchset #25 id:560001 of https://codereview.chromium.org/1390053002/ )
Reason for revert:
This has caused errors on the Linux TSAN bot. First failing build:
https://build.chromium.org/p/chromium.memory.fyi/builders/Linux%20TSan%20Tests/builds/17851
Sample output:
WARNING: ThreadSanitizer: data race (pid=29730)
Read of size 8 at 0x7d540000f890 by thread T8:
#0 get buildtools/third_party/libc++/trunk/include/memory:2714:69 (content_browsertests+0x000004cdffbd)
#1 content::RenderProcessHostImpl::GetHandle() const content/browser/renderer_host/render_process_host_impl.cc:1648 (content_browsertests+0x000004cdffbd)
#2 content::TracedFrameTreeNode::TracedFrameTreeNode(content::FrameTreeNode const&) content/browser/frame_host/traced_frame_tree_node.cc:32:5 (content_browsertests+0x000004c132f1)
#3 content::FrameTreeNode::TraceSnapshot() const content/browser/frame_host/frame_tree_node.cc:470:3 (content_browsertests+0x000004bd3804)
#4 content::FrameTreeNode::OnTraceLogEnabled() content/browser/frame_host/frame_tree_node.cc:466:3 (content_browsertests+0x000004bd5cf9)
#5 base::trace_event::TraceLog::SetEnabled(base::trace_event::TraceConfig const&, base::trace_event::TraceLog::Mode) base/trace_event/trace_log.cc:638:5 (content_browsertests+0x000001085fad)
#6 content::TracingControllerImpl::SetEnabledOnFileThread(base::trace_event::TraceConfig const&, int, base::Callback<void ()> const&) content/browser/tracing/tracing_controller_impl.cc:211:3 (content_browsertests+0x000004dca941)
#7 Run<const base::trace_event::TraceConfig &, const base::trace_event::TraceLog::Mode &, const base::Callback<void ()> &> base/bind_internal.h:181:12 (content_browsertests+0x000004dd1b60)
#8 MakeItSo<content::TracingControllerImpl *, const base::trace_event::TraceConfig &, const base::trace_event::TraceLog::Mode &, const base::Callback<void ()> &> base/bind_internal.h:301 (content_browsertests+0x000004dd1b60)
#9 base::internal::Invoker<base::IndexSequence<0ul, 1ul, 2ul, 3ul>, base::internal::BindState<base::internal::RunnableAdapter<void (content::TracingControllerImpl::*)(base::trace_event::TraceConfig const&, int, base::Callback<void ()> const&)>, void (content::TracingControllerImpl*, base::trace_event::TraceConfig const&, int, base::Callback<void ()> const&), base::internal::UnretainedWrapper<content::TracingControllerImpl>, base::trace_event::TraceConfig const&, base::trace_event::TraceLog::Mode, base::Callback<void ()>&>, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (content::TracingControllerImpl::*)(base::trace_event::TraceConfig const&, int, base::Callback<void ()> const&)> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:351 (content_browsertests+0x000004dd1b60)
#10 Run base/callback.h:394:12 (content_browsertests+0x000001093cbd)
#11 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask const&) base/debug/task_annotator.cc:51 (content_browsertests+0x000001093cbd)
#12 base::MessageLoop::RunTask(base::PendingTask const&) base/message_loop/message_loop.cc:476:3 (content_browsertests+0x000001014762)
#13 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask const&) base/message_loop/message_loop.cc:485:5 (content_browsertests+0x000001014cfd)
#14 base::MessageLoop::DoWork() base/message_loop/message_loop.cc:597:13 (content_browsertests+0x0000010150e5)
#15 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:229:21 (content_browsertests+0x000000feeac0)
#16 base::MessageLoop::RunHandler() base/message_loop/message_loop.cc:440:3 (content_browsertests+0x00000101415b)
#17 base::RunLoop::Run() base/run_loop.cc:35:3 (content_browsertests+0x0000010308f6)
#18 base::MessageLoop::Run() base/message_loop/message_loop.cc:293:3 (content_browsertests+0x0000010139a5)
#19 base::Thread::Run(base::MessageLoop*) base/threading/thread.cc:202:3 (content_browsertests+0x000001059239)
#20 content::BrowserThreadImpl::FileThreadRun(base::MessageLoop*) content/browser/browser_thread_impl.cc:188:3 (content_browsertests+0x000004b7227e)
#21 content::BrowserThreadImpl::Run(base::MessageLoop*) content/browser/browser_thread_impl.cc:243:14 (content_browsertests+0x000004b7281a)
#22 base::Thread::ThreadMain() base/threading/thread.cc:254:3 (content_browsertests+0x000001059409)
#23 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:68:3 (content_browsertests+0x0000010537dd)
.........
Original issue's description:
> Trace FrameTreeNode Snapshots
>
> This will provide a single ground-truth for frame structure in tracing.
>
> FrameTreeNodes are snapshot when they are created or destroyed,
> when tracing starts, and when a frame's url changes.
> Each snapshot contains the frame's url,
> a reference to its parent (unless it's a root),
> and a cross-process scoped reference to the current RenderFrame.
>
> The snapshots are traced at their frame_tree_node_id, not their memory address.
> The RenderFrames are traced at their routing_ids, not their memory address,
> so that FrameTreeNodes can use cross-process references to them.
>
> Pending and speculative RenderFrames are not supported. If a specific
> use case is found for them, then cross-process scoped references
> will be added to TracedFrameTreeNode for them.
> The RenderFrame references will allow correlating frame tree structure
> and FrameTreeNode objects with LocalFrame Trace Contexts.
>
> The data for each FrameTreeNode is copied to a TracedFrameTreeNode when the
> snapshot is recorded, not when the trace is dumped to JSON, because the
> underlying FrameTree might change between when the snapshot is recorded
> and when the trace is dumped to JSON.
>
> RenderFrames and FrameTreeNodes are snapshot when they are created
> so that there's always a snapshot for the tracing model to find when
> it patches up the references.
>
> The catapult side of this change is https://codereview.chromium.org/1736373002
>
> The RenderFrame object snapshots that are referenced by the FrameTreeNode snapshots
> are in Sami's Frameblamr CL:
> https://codereview.chromium.org/1447563002/
>
> BUG=537802
> CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation
>
> Committed: https://crrev.com/ff37bf3297e8cbe14c6a865e528673f0814c7da1
> Cr-Commit-Position: refs/heads/master@{#379623}
TBR=clamy@chromium.org,nasko@chromium.org,skyostil@chromium.org,benjhayden@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=537802
Committed: https://crrev.com/9f3523503d166f80c6bb77061378b4e2a7ee4827
Cr-Commit-Position: refs/heads/master@{#379742}
Patch Set 1 #
Messages
Total messages: 6 (2 generated)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||