Can't inspect deeply nested promise
Categories
(DevTools :: Console, defect, P3)
Tracking
(firefox85 fixed)
Tracking | Status | |
---|---|---|
firefox85 | --- | fixed |
People
(Reporter: Oriol, Assigned: Oriol)
References
Details
Attachments
(1 file)
Run this code in the console:
var p = {};
for (let i=0; i < 15000; ++i) {
p = Object.setPrototypeOf(Promise.resolve(p), null);
}
p;
Result: an empty error message.
If instead of p;
you use [p];
at the end, and then expand the array, the browser console says:
Error while calling actor 'propertyIterator's method 'slice' too much recursion
objectGrip@resource://devtools/server/actors/webconsole.js:433:1
createValueGrip@resource://devtools/server/actors/object/utils.js:122:14
createValueGrip@resource://devtools/server/actors/webconsole.js:389:12
createValueGrip@resource://devtools/server/actors/webconsole.js:438:34
_createPromiseState@resource://devtools/server/actors/object.js:190:39
form@resource://devtools/server/actors/object.js:131:29
objectGrip@resource://devtools/server/actors/webconsole.js:445:18
createValueGrip@resource://devtools/server/actors/object/utils.js:122:14
createValueGrip@resource://devtools/server/actors/webconsole.js:389:12
createValueGrip@resource://devtools/server/actors/webconsole.js:438:34
_createPromiseState@resource://devtools/server/actors/object.js:190:39
form@resource://devtools/server/actors/object.js:131:29
...
This is the same as bug 1392760 but for promises instead of proxies. Though this one is not that bad, because the behavior is not exponential, and promises can't be nested by default (that's why the code uses the Object.setPrototypeOf
trick)
Updated•5 years ago
|
Assignee | ||
Comment 1•3 years ago
|
||
Alternative code, cyclic promises:
var resolve;
var promise1 = new Promise(r => {resolve = r});
Object.setPrototypeOf(promise1, null);
var promise2 = Promise.resolve(promise1);
Object.setPrototypeOf(promise2, null);
resolve(promise2);
promise1;
Assignee | ||
Comment 2•3 years ago
|
||
Pushed by nerli@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/0affc83cf6d5 Avoid too much recursion when inspecting nested promises. r=nchevobbe,devtools-backward-compat-reviewers
Comment 4•3 years ago
|
||
bugherder |
Description
•