heap profiler crashes on large pages |
|||||||||||||||||
Issue descriptionVersion: ToT (2925.0, #433227) 0. Navigate to theverge.com 1. Open DevTools 2. Switch to Profile panel 3. Select "Take heap snapshot" 4. Press "Take snapshot button" 5. KABOOM! Received signal 11 SEGV_MAPERR 00000000006f #0 0x7f415dc9c847 base::debug::(anonymous namespace)::StackDumpSignalHandler() #1 0x7f415b75c330 <unknown> #2 0x7f415ceec611 v8::internal::V8HeapExplorer::ExtractContextReferences() #3 0x7f415cef08de v8::internal::V8HeapExplorer::IterateAndExtractSinglePass<>() #4 0x7f415cef0162 v8::internal::V8HeapExplorer::IterateAndExtractReferences() #5 0x7f415cef5229 v8::internal::HeapSnapshotGenerator::GenerateSnapshot() #6 0x7f415cee7b67 v8::internal::HeapProfiler::TakeSnapshot() #7 0x7f415d1ac739 v8_inspector::V8HeapProfilerAgentImpl::takeHeapSnapshot()
,
Nov 22 2016
,
Nov 22 2016
Yes, the context held by the promise resolving builtins(kPromiseResolveClosure, kPromiseRejectClosure) don't have a closure and previous context field. The two builtins share the context, so there isn't a correct closure field to be set here. I see multiple potential fixes -- 1) Add null checks before accessing these fields in ExtractContextReferences. This is a pretty minimal, but ad hoc solution. 2) Create two different contexts for each of the builtins. This has unnecessary extra perf/memory overhead. 3) Add a new context type (eg. PromiseContext) that fails the is_declaration_context() check. This would involve having a new promise context map. 4) Don't use the context to store the builtin metadata(promise, debugevent, already_visited) and instead use some other slot/field in JSFunction. This is probably going to be a non trivial change and not worth it. Georg, thoughts on the above solutions?
,
Nov 22 2016
,
Nov 22 2016
,
Nov 22 2016
It looks strange to me that the accessor declared as JSFunction* can be undefined. Isn't it against the contract?
,
Nov 22 2016
Users experienced this crash on the following builds: Linux Dev 56.0.2922.1 - 2.16 CPM, 3 reports, 1 clients (signature v8::internal::V8HeapExplorer::ExtractContextReferences) If this update was incorrect, please add "Fracas-Wrong" label to prevent future updates. - Go/Fracas
,
Nov 22 2016
I think you should just set that context's closure to an empty function (that's what we do for the native context too, see bootstrapper.cc). Regarding (2) I think you are misunderstanding: the closure field is supposed to point to the function in which the context was created.
,
Nov 23 2016
Issue 666249 has been merged into this issue.
,
Nov 23 2016
Users experienced this crash on the following builds: Mac Canary 57.0.2926.0 - 0.27 CPM, 5 reports, 4 clients (signature v8::internal::V8HeapExplorer::ExtractContextReferences) Linux Dev 56.0.2922.1 - 2.08 CPM, 5 reports, 1 clients (signature v8::internal::V8HeapExplorer::ExtractContextReferences) If this update was incorrect, please add "Fracas-Wrong" label to prevent future updates. - Go/Fracas
,
Nov 23 2016
Landed https://codereview.chromium.org/2528603002/ which should fix this.
,
Nov 24 2016
,
Nov 28 2016
,
Nov 29 2016
[Automated comment] No milestone found on Merge-Request (i.e. merge-request-# label).
,
Dec 5 2016
Friendly ping. I wonder how long it takes to review the merge request. Adding Chrome build number to the merge request per comment #14.
,
Dec 6 2016
This is marked as Platform>DevTools>Performance. Only Blink>JavaScript are valid "proper" V8 bugs thus it was not showing up on V8's merge radar. It also did not show up on Chrome's radar because of #14.
,
Dec 6 2016
If this bug is fixe,d please set it to fixed btw.
,
Dec 6 2016
I'll mark it so as soon as I get the fix merged into M56.
,
Dec 6 2016
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/1ed70b6c094a846fcc3aff8b4534e735697daa63 commit 1ed70b6c094a846fcc3aff8b4534e735697daa63 Author: gsathya <gsathya@chromium.org> Date: Tue Dec 06 20:15:38 2016 Merged: [promises] Set promise context's closure to be an empty function Revision: a29b658eec3324716e39d44add188499f298c590 BUG= chromium:666984 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true R=neis@chromium.org Review-Url: https://codereview.chromium.org/2555023002 Cr-Commit-Position: refs/branch-heads/5.6@{#38} Cr-Branched-From: bdd3886218dfe76e8560eb8a18401942452ae859-refs/heads/5.6.326@{#1} Cr-Branched-From: 879f6599eee6e1dfcbe9a24bf688b261c03e9558-refs/heads/master@{#41014} [modify] https://crrev.com/1ed70b6c094a846fcc3aff8b4534e735697daa63/src/promise-utils.cc
,
Dec 6 2016
,
Dec 6 2016
If there is no pending work please remove Merge-Approved-56 label.
,
Dec 6 2016
,
Dec 8 2016
,
Feb 23 2017
|
|||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||
Comment 1 by alph@chromium.org
, Nov 22 2016