The JS engine prints out a bunch of stuff at shutdown when we leak. Mostly they are capped, but for some reason they aren't for SharedScriptData, so you get a ton of leaks like this logged:
ERROR: GC found live SharedScriptData 113B0C10 with ref count 2 at shutdown
Here's an example: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=242588968&repo=mozilla-inbound&lineNumber=72288
The reason this isn't capped for SharedScriptData is that this logging is done in js::FreeScriptData(), instead of ArenaLists::checkEmptyArenaList(), and it just doesn't have the same logic there to limit the amount of spam.
I'd also like to reduce maxCells in ArenaLists::checkEmptyArenaList() from 20 to something like 5 to make this less spammy. There's a fair amount of it given all of the tracekinds.