Open Bug 1643834 Opened 4 years ago Updated 2 years ago

Closing Browser Console hangs main process with `Pool::destroy`

Categories

(DevTools :: Console, defect, P3)

x86_64
macOS
defect

Tracking

(Not tracked)

ASSIGNED

People

(Reporter: mossop, Assigned: nchevobbe)

References

(Blocks 1 open bug)

Details

I noticed that my browser was getting sluggish, in particular a few times I loaded twitter the main process would beachball for multiple seconds at a time. It happened again clicking a link on quora and I managed to capture this profile: https://share.firefox.dev/2Uh6P39

It looks like during the hangs most of the time was spent in devtools code, in particular updateClassInstance in react-dom.js. It confused me at first because I didn't think I had the devtools open anywhere but then I spotted I had the browser console window open behind my main window. I closed the window and then my main process beachballed for about 30 seconds. I should have throught to capture a profile but sadly I didn't.

Opening and closing the console now doesn't seem to have any problems, but that browser console window had been open for around four hours so it will take some time to try to replicate that situation.

It wasn't open for quite as long and so didn't beachball for quite as long but here is a profile of closing the browser console that causes a 7 second event loop delay: https://share.firefox.dev/3eUq8Hn

Nicolas, not sure if this is a regression from the server refactoring – looks like Pool::destroy's Map::has usage is a bottleneck when closing the Console.

Blocks: console-perf
Severity: -- → S3
Flags: needinfo?(nchevobbe)
Priority: -- → P3
Summary: Browser Console beachballs main process main process → Closing Browser Console hangs main process with `Pool::destroy`

(In reply to :Harald Kirschner :digitarald from comment #2)

Nicolas, not sure if this is a regression from the server refactoring – looks like Pool::destroy's Map::has usage is a bottleneck when closing the Console.

if we're talking about the work we did to only have one implementation of Pools, I don't think so, as the implementations were similar.

Flags: needinfo?(nchevobbe)
Assignee: nobody → nchevobbe
Status: NEW → ASSIGNED
You need to log in before you can comment on or make changes to this bug.