Bug 196890

Summary: Web Inspector: Heap: don't use recursion when calculating root paths
Product: WebKit Reporter: Devin Rousso <hi>
Component: Web InspectorAssignee: Devin Rousso <hi>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, hi, inspector-bugzilla-changes, joepeck, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Attachments:
Description Flags
Patch
none
Patch none

Devin Rousso
Reported 2019-04-12 18:26:42 PDT
If a path is extremely deep, it can cause a stack overflow.
Attachments
Patch (3.77 KB, patch)
2019-04-12 18:30 PDT, Devin Rousso
no flags
Patch (4.23 KB, patch)
2019-04-15 14:35 PDT, Devin Rousso
no flags
Radar WebKit Bug Importer
Comment 1 2019-04-12 18:28:46 PDT
Devin Rousso
Comment 2 2019-04-12 18:30:30 PDT
Joseph Pecoraro
Comment 3 2019-04-15 11:18:04 PDT
Comment on attachment 367366 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=367366&action=review r=me > Source/WebInspectorUI/UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:756 > + for (let i = 0; i < stack.length; ++i) { > + let {currentPath, nodeOrdinal} = stack[i]; This list is not being treated as a stack. In fact it is always growing because nothing nothing is ever removed. Normally when we have a stack approach like this we process it to exhaustion like this: let stack = [{...entry...}]; while (stack.length) { let entry = stack.pop(); // Process entry, maybe push new stack entries. } Which I think could be done here as long as you convert these two lines to: while (stack.length) { let {currentPath, nodeOridinal} = stack.pop(); ... That said, items are going to be processes on the stack in reverse order... so to get unchanging output you could iterate the edges in forward order such as: while (stack.length) { let {currentPath, nodeOridinal} = stack.unshift(); ... That should get you output that is consistent with the current code.
Devin Rousso
Comment 4 2019-04-15 14:35:21 PDT
WebKit Commit Bot
Comment 5 2019-04-15 16:49:09 PDT
Comment on attachment 367460 [details] Patch Clearing flags on attachment: 367460 Committed r244308: <https://trac.webkit.org/changeset/244308>
WebKit Commit Bot
Comment 6 2019-04-15 16:49:10 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.