New issue
Advanced search Search tips

Issue 811925 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Show detached DOM trees in heap snapshot

Project Member Reported by u...@chromium.org, Feb 13 2018

Issue description

Add detached DOM tree feature to the new embedder graph API.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Feb 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/252e8a1c2d629ef5300a3b4610e626b71e75973b

commit 252e8a1c2d629ef5300a3b4610e626b71e75973b
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Feb 20 15:04:48 2018

[heap-profiler] Merge embedder nodes and V8 wrapper nodes.

Each DOM node has the corresponding V8 wrapper object. This leads to
apparent duplication in the heap snapshot and may confuse the users.

This patch allows the embedder to specify V8 wrapper for each embedder
node. In the heap snapshot the wrapper node will be merged into the
embedder node. The resulting node will have the same properties as
the embedder node. If the wrapper node name has a tag, then the tag
is also added to the merged node.

Bug:  chromium:811925 

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I2492f5b28163a78aee707b9ced1b09ac4b203e3f
Reviewed-on: https://chromium-review.googlesource.com/919482
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51394}
[modify] https://crrev.com/252e8a1c2d629ef5300a3b4610e626b71e75973b/include/v8-profiler.h
[modify] https://crrev.com/252e8a1c2d629ef5300a3b4610e626b71e75973b/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/252e8a1c2d629ef5300a3b4610e626b71e75973b/src/profiler/heap-snapshot-generator.h
[modify] https://crrev.com/252e8a1c2d629ef5300a3b4610e626b71e75973b/test/cctest/test-heap-profiler.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Feb 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4724d0ff81da3db0624b3ab80cdab3dfa78fffa6

commit 4724d0ff81da3db0624b3ab80cdab3dfa78fffa6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Feb 21 13:52:09 2018

[heap-profiler] Fix a bug in MergeNames function.

Bug:  chromium:811925 
Change-Id: I0b2d9562fa77d6d198a689769705a2d5e977abf9
Reviewed-on: https://chromium-review.googlesource.com/928701
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51432}
[modify] https://crrev.com/4724d0ff81da3db0624b3ab80cdab3dfa78fffa6/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/4724d0ff81da3db0624b3ab80cdab3dfa78fffa6/test/cctest/test-heap-profiler.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Feb 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5da78ea40b5f4c013d73f6d3f790f4de61c38404

commit 5da78ea40b5f4c013d73f6d3f790f4de61c38404
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Feb 22 10:48:03 2018

[heap-profiler] Allow embedder to specify node name prefix.

This patch adds EmbedderGraph::Node::NamePrefix method that will be used
by Chrome for detached DOM nodes.

Bug:  chromium:811925 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I89d3b88a3b90ed85addb1d34f08dd15e0559aa9a
Reviewed-on: https://chromium-review.googlesource.com/926362
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51464}
[modify] https://crrev.com/5da78ea40b5f4c013d73f6d3f790f4de61c38404/include/v8-profiler.h
[modify] https://crrev.com/5da78ea40b5f4c013d73f6d3f790f4de61c38404/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/5da78ea40b5f4c013d73f6d3f790f4de61c38404/test/cctest/test-heap-profiler.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Feb 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d690c63866704bb7896b89ddb5b6b3452baf28c6

commit d690c63866704bb7896b89ddb5b6b3452baf28c6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Feb 26 15:08:01 2018

[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.

Each DOM node has a corresponding JS wrapper node. In heap snapshot
they appear as duplicates.

Example retaining path with duplicates:
- [1] in InternalNode @2041178784
- [1] in HTMLDivElement @2041079168  // DOM node
- [3] in HTMLDivElement @2231        // JS wrapper
- retainer in Window / @2105

The heap snapshot generator now can merge an embedder node with a node
returned by EmbedderGraph::Node::WrapperNode() function.

This patch implements the WrapperNode() function for each DOM node.

Bug:  chromium:811925 
Change-Id: I9ea6bc7e45f8ab3d54828b9ac61f7230d04d8019
Reviewed-on: https://chromium-review.googlesource.com/928503
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539132}
[add] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[add] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/d690c63866704bb7896b89ddb5b6b3452baf28c6/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h

Project Member

Comment 5 by bugdroid1@chromium.org, Feb 27 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1d26a7a807db1458bf533531e409cc05005cf4f8

commit 1d26a7a807db1458bf533531e409cc05005cf4f8
Author: Henrik Boström <hbos@chromium.org>
Date: Tue Feb 27 11:49:04 2018

Revert "[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot."

This reverts commit d690c63866704bb7896b89ddb5b6b3452baf28c6.

Reason for revert: Suspect for Linux MSAN bot consistent failures, first one being:
https://uberchromegw.corp.google.com/i/chromium.webkit/builders/WebKit%20Linux%20Trusty%20MSAN/builds/6338

Original change's description:
> [heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.
> 
> Each DOM node has a corresponding JS wrapper node. In heap snapshot
> they appear as duplicates.
> 
> Example retaining path with duplicates:
> - [1] in InternalNode @2041178784
> - [1] in HTMLDivElement @2041079168  // DOM node
> - [3] in HTMLDivElement @2231        // JS wrapper
> - retainer in Window / @2105
> 
> The heap snapshot generator now can merge an embedder node with a node
> returned by EmbedderGraph::Node::WrapperNode() function.
> 
> This patch implements the WrapperNode() function for each DOM node.
> 
> Bug:  chromium:811925 
> Change-Id: I9ea6bc7e45f8ab3d54828b9ac61f7230d04d8019
> Reviewed-on: https://chromium-review.googlesource.com/928503
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#539132}

TBR=ulan@chromium.org,haraken@chromium.org,mlippautz@chromium.org

Change-Id: If05b23d13bb68f0dc870cc047b399ed43c4472f6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:811925 
Reviewed-on: https://chromium-review.googlesource.com/939341
Reviewed-by: Henrik Boström <hbos@chromium.org>
Commit-Queue: Henrik Boström <hbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539419}
[delete] https://crrev.com/0ca23dc56b2f90e444b04d8fc72dc9f81835088b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[delete] https://crrev.com/0ca23dc56b2f90e444b04d8fc72dc9f81835088b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/1d26a7a807db1458bf533531e409cc05005cf4f8/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h

Project Member

Comment 6 by bugdroid1@chromium.org, Mar 7 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/92aa9f819cff7ca85ccef53c4b8a05b93110739b

commit 92aa9f819cff7ca85ccef53c4b8a05b93110739b
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Mar 07 10:33:28 2018

Reland "[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot."

This relands commit d690c63866704bb7896b89ddb5b6b3452baf28c6.

Original change's description:
> [heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.
>
> Each DOM node has a corresponding JS wrapper node. In heap snapshot
> they appear as duplicates.
>
> Example retaining path with duplicates:
> - [1] in InternalNode @2041178784
> - [1] in HTMLDivElement @2041079168  // DOM node
> - [3] in HTMLDivElement @2231// JS wrapper
> - retainer in Window / @2105
>
> The heap snapshot generator now can merge an embedder node with a node
> returned by EmbedderGraph::Node::WrapperNode() function.
>
> This patch implements the WrapperNode() function for each DOM node.
>
> Bug:  chromium:811925 
> Change-Id: I9ea6bc7e45f8ab3d54828b9ac61f7230d04d8019
> Reviewed-on: https://chromium-review.googlesource.com/928503
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#539132}


Change-Id: I4223d1369874ad34dfff1a74d5725360c360300c
Reviewed-on: https://chromium-review.googlesource.com/951252
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541403}
[add] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[add] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/92aa9f819cff7ca85ccef53c4b8a05b93110739b/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h

Project Member

Comment 7 by bugdroid1@chromium.org, Mar 7 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/786ed1e08978614b384fa5129bd55c9215553cdf

commit 786ed1e08978614b384fa5129bd55c9215553cdf
Author: Shuotao Gao <stgao@chromium.org>
Date: Wed Mar 07 21:26:26 2018

Revert "Reland "[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.""

This reverts commit 92aa9f819cff7ca85ccef53c4b8a05b93110739b.

Reason for revert: 
inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js is failing since https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Linux%20Trusty%20MSAN/6477 until https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Linux%20Trusty%20MSAN/6482 when this revert is created.

Original change's description:
> Reland "[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot."
> 
> This relands commit d690c63866704bb7896b89ddb5b6b3452baf28c6.
> 
> Original change's description:
> > [heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.
> >
> > Each DOM node has a corresponding JS wrapper node. In heap snapshot
> > they appear as duplicates.
> >
> > Example retaining path with duplicates:
> > - [1] in InternalNode @2041178784
> > - [1] in HTMLDivElement @2041079168  // DOM node
> > - [3] in HTMLDivElement @2231// JS wrapper
> > - retainer in Window / @2105
> >
> > The heap snapshot generator now can merge an embedder node with a node
> > returned by EmbedderGraph::Node::WrapperNode() function.
> >
> > This patch implements the WrapperNode() function for each DOM node.
> >
> > Bug:  chromium:811925 
> > Change-Id: I9ea6bc7e45f8ab3d54828b9ac61f7230d04d8019
> > Reviewed-on: https://chromium-review.googlesource.com/928503
> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#539132}
> 
> 
> Change-Id: I4223d1369874ad34dfff1a74d5725360c360300c
> Reviewed-on: https://chromium-review.googlesource.com/951252
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Kentaro Hara <haraken@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#541403}

TBR=ulan@chromium.org,haraken@chromium.org,hbos@chromium.org

Change-Id: Ic99975f4052831b7a799c882a2227e1a64d04f97
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/953368
Reviewed-by: Shuotao Gao <stgao@chromium.org>
Commit-Queue: Shuotao Gao <stgao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541585}
[delete] https://crrev.com/251e255f303f954692cd7e2134ea54b37a9774ff/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[delete] https://crrev.com/251e255f303f954692cd7e2134ea54b37a9774ff/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/786ed1e08978614b384fa5129bd55c9215553cdf/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7

commit a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Mar 08 12:13:49 2018

Reland^2 "[heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot."

This relands commit d690c63866704bb7896b89ddb5b6b3452baf28c6.

This time the new test is marked as timeout in MSAN expectation.

Original change's description:
> [heap-profiler] Merge DOM node and its JS wrapper node in heap snapshot.
>
> Each DOM node has a corresponding JS wrapper node. In heap snapshot
> they appear as duplicates.
>
> Example retaining path with duplicates:
> - [1] in InternalNode @2041178784
> - [1] in HTMLDivElement @2041079168  // DOM node
> - [3] in HTMLDivElement @2231// JS wrapper
> - retainer in Window / @2105
>
> The heap snapshot generator now can merge an embedder node with a node
> returned by EmbedderGraph::Node::WrapperNode() function.
>
> This patch implements the WrapperNode() function for each DOM node.
>
> Bug:  chromium:811925 
> Change-Id: I9ea6bc7e45f8ab3d54828b9ac61f7230d04d8019
> Reviewed-on: https://chromium-review.googlesource.com/928503
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#539132}

Change-Id: I0523477d562c68512a2a92902022826df8a32820
Reviewed-on: https://chromium-review.googlesource.com/955243
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541775}
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/MSANExpectations
[add] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[add] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes.js
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener-expected.txt
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-event-listener.js
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers-expected.txt
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-multiple-retainers.js
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/a49090b7b6c4f245d5b17dbc64a97dd03c5dcef7/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h

Project Member

Comment 9 by bugdroid1@chromium.org, Mar 15 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ee7b1d65ba78fffa1239da99ae8a035186f59510

commit ee7b1d65ba78fffa1239da99ae8a035186f59510
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Mar 15 16:10:22 2018

[bindings] Show detached DOM nodes in DevTools heap snapshot.

The patch uses Node::isConnected() and Document::IsContextDestroyed()
predicates to compute whether a Node is detached or not. This information
is then propagated to all ScriptWrappables.

DevTools shows detached nodes with the "Detached" prefix. For example,
"Detached HTMLDocument" or "Detached Window".

Bug:  811925 
Change-Id: Ib7987f578cc513b6bdfcfe084c885cbff84a4dba
Reviewed-on: https://chromium-review.googlesource.com/961401
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543382}
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/MSANExpectations
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-merged-nodes-expected.txt
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-detached-dom-tree-expected.txt
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-detached-dom-tree.js
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-detached-iframe-expected.txt
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-detached-iframe.js
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-no-detached-iframe-expected.txt
[add] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/LayoutTests/inspector-protocol/heap-profiler/heap-snapshot-with-no-detached-iframe.js
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.cpp
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/Source/bindings/core/v8/V8EmbedderGraphBuilder.h
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/ee7b1d65ba78fffa1239da99ae8a035186f59510/third_party/WebKit/Source/core/dom/Document.h

Project Member

Comment 10 by bugdroid1@chromium.org, Mar 16 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3fbb23212abb4bd80c32c32fb1576b245bd06525

commit 3fbb23212abb4bd80c32c32fb1576b245bd06525
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Mar 16 16:15:35 2018

Implement NameInHeapSnapshot for all TraceWrapperBase objects.

Currently some DOM objects in DevTools heap snapshot show up as
"UnknownNode" because the corresponding TraceWrapperBase objects do
not implement the NameInHeapSnapshot method. This patch fixes it.

The patch also makes NameInHeapSnapshot pure.

Bug:  811925 
Cq-Include-Trybots: luci.chromium.try:linux_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I495a75c5ee0c9f765a6d94daed62cf34c345d124
Reviewed-on: https://chromium-review.googlesource.com/966423
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543717}
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableMarkingVisitorTest.cpp
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/bindings/core/v8/V8NodeFilterCondition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/css/StyleEngine.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/css/StyleSheetCollection.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/DocumentParser.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/ElementShadow.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/ElementShadowV0.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/FrameRequestCallbackCollection.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/MutationObserver.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/MutationObserverRegistration.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/ScriptedAnimationController.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/html/custom/CustomElementDefinition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/html/custom/CustomElementReactionStack.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/html/imports/HTMLImportTreeRoot.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/intersection_observer/ElementIntersectionObserverData.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/intersection_observer/IntersectionObserverController.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/intersection_observer/IntersectionObserverDelegate.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/layout/custom/CSSLayoutDefinition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/loader/modulescript/ModuleTreeLinkerRegistry.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/HTMLParserScriptRunner.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/Modulator.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/ModuleMap.cpp
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/ModuleMap.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/ModuleScript.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/PendingScript.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/ScriptLoader.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/script/ScriptRunner.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/animationworklet/Animator.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/animationworklet/AnimatorDefinition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/geolocation/GeoNotifier.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/geolocation/GeolocationWatchers.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/geolocation/NavigatorGeolocation.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/locks/LockManager.cpp
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/locks/NavigatorLocks.cpp
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/remoteplayback/AvailabilityCallbackWrapper.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainerClient.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/webaudio/AudioWorkletProcessorDefinition.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/webgl/WebGLContextGroup.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/webgl/WebGLFramebuffer.cpp
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/webgl/WebGLFramebuffer.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/modules/xr/XRFrameRequestCallbackCollection.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/platform/bindings/CallbackFunctionBase.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/platform/bindings/CallbackInterfaceBase.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/platform/bindings/TraceWrapperBase.h
[modify] https://crrev.com/3fbb23212abb4bd80c32c32fb1576b245bd06525/third_party/WebKit/Source/platform/bindings/TraceWrapperV8String.h

Project Member

Comment 11 by bugdroid1@chromium.org, Mar 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/aa8286d1241942e34ac24dab4be37d3c5d51caaa

commit aa8286d1241942e34ac24dab4be37d3c5d51caaa
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Mar 20 10:57:31 2018

[heap-profiler] Fix highlighting of detached DOM tree nodes.

The _markDetachedDOMTreeNodes in the worker sets the detachedDOMTreeNode
flag if the node is native and its name starts with "Detached " prefix.

This patch also ensures that '.highlight' and '.detached-dom-tree-node'
CSS styles are not set both at the same time.

Bug:  811925 
Change-Id: Iee4ee0647abb19a36c1be2f078b4c2915d67cba5
Reviewed-on: https://chromium-review.googlesource.com/964761
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544327}
[modify] https://crrev.com/aa8286d1241942e34ac24dab4be37d3c5d51caaa/third_party/WebKit/Source/devtools/front_end/heap_snapshot_worker/HeapSnapshot.js
[modify] https://crrev.com/aa8286d1241942e34ac24dab4be37d3c5d51caaa/third_party/WebKit/Source/devtools/front_end/profiler/HeapSnapshotGridNodes.js

Comment 12 by u...@chromium.org, Mar 21 2018

Status: Fixed (was: Assigned)

Sign in to add a comment