The object inspector's getPrototype rejects when the object actor has gone away
Categories
(DevTools :: Shared Components, defect)
Tracking
(Not tracked)
People
(Reporter: florian, Assigned: florian)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
loadItemProperties issues all of a node's property requests in one Promise.all. The five enum* helpers in devtools/client/shared/components/object-inspector/utils/client.js treat a failed request as no data. getPrototype does not, so an object actor released under it makes the whole batch reject.
The debugger's inline previews run from a floating promise in fetchScopes that handles nothing but a ContextError. The rejection therefore surfaces as uncaught rejection: Protocol error (noSuchActor) and fails browser_dbg-reloading.js on linux tsan, 3 of 9 runs on a try push. Giving getPrototype the same try/catch as its siblings is enough.
| Assignee | ||
Comment 1•2 days ago
|
||
loadItemProperties issues its requests in one Promise.all, where the five
enum* helpers treat a failed request as "no data" and getPrototype,
getGlobal, getPromiseState and getProxySlots reject. Inline previews run
from a floating promise in fetchScopes, so an object actor released under
getPrototype leaves an unhandled Protocol error (noSuchActor), which fails
browser_dbg-reloading.js on linux tsan.
The catches swallow every error rather than only actor death, in a helper the
console, inspector and netmonitor share too; that is what the five enum*
siblings already do, so this makes the four outliers consistent rather than
adding a behaviour.
Updated•2 days ago
|
Description
•