Closed
Bug 899270
Opened 12 years ago
Closed 12 years ago
!JSRuntime::hasLiveRuntimes() fatal assertion breaks nsTraceRefcnt's BloatView
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
FIXED
mozilla25
People
(Reporter: jruderman, Assigned: Waldo)
References
Details
(Keywords: assertion, regression, testcase, Whiteboard: [MemShrink])
The leak testcase in bug 898906 now trips an assertion on shutdown:
Assertion failure: !JSRuntime::hasLiveRuntimes() (forgot to destroy a runtime before shutting down), at js/src/jsapi.cpp:710
This assertion was introduced in bug 896124:
http://hg.mozilla.org/mozilla-central/rev/e432690bf0fb
Turning a leak into a fatal assertion makes me a little sad.
Comment 1•12 years ago
|
||
As I mentioned in https://bugzilla.mozilla.org/show_bug.cgi?id=896124#c17, this causes a crash for me on startup.
Comment 2•12 years ago
|
||
Start of the browser with -ProfileManager, I just found out! So it's on Profile Manager shutdown that this assertion gets called, which halts the browser startup sequence.
| Assignee | ||
Comment 3•12 years ago
|
||
This really isn't a JS engine bug. If the embedder isn't destroying all his runtimes, that's his own fault, and there's really nothing the JS engine can safely do about that.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → INVALID
Comment 4•12 years ago
|
||
It isn't okay to turn a shutdown leak into a fatal assertion, because this essentially disables BloatView, which is a critical part of our leak fixing infrastructure. This makes it harder to tell when there is a leak, harder to fix a leak (because you can't see what is leaking), and it also makes it impossible to see how bad a leak is (is it just leaking a few strings or an entire document?). This is going to make it impossible to distinguish different leaks on TBPL.
For instance, bug 900636 is "Intermittent Windows mochitest-2 TEST-UNEXPECTED-FAIL | Shutdown | application timed out after 330 seconds with no output (Assertion failure: !JSRuntime::hasLiveRuntimes() (forgot to destroy a runtime before shutting down), at js/src/jsapi.cpp:710)". You can't even easily tell that it is a shutdown leak, or see anything about what is leaking.
Can we turn this into some kind of non-fatal assertion? Or failing that, remove the assertion altogether?
Status: RESOLVED → REOPENED
OS: Mac OS X → All
Hardware: x86_64 → All
Resolution: INVALID → ---
Summary: Assertion failure: "forgot to destroy a runtime before shutting down" with leak testcase → !JSRuntime::hasLiveRuntimes() fatal assertion breaks nsTraceRefcnt's BloatView
Whiteboard: [MemShrink]
Comment 5•12 years ago
|
||
Judging by the messages for these two intermittent oranges, we're burning 5.5 minutes of test pool time each time we hit this assertion (waiting for the timeout), rather than just shutting down.
| Assignee | ||
Comment 6•12 years ago
|
||
Turned into an fprintf(stderr, ...) in a followup push in bug 896124.
We must burn 5.5 minutes every time we crash, then. Feel free to take up that issue with the test harnesses or something if you want, but that behavior's nothing new at all.
Status: REOPENED → RESOLVED
Closed: 12 years ago → 12 years ago
Resolution: --- → FIXED
| Reporter | ||
Comment 7•12 years ago
|
||
Updated•12 years ago
|
Assignee: general → jwalden+bmo
Target Milestone: --- → mozilla25
You need to log in
before you can comment on or make changes to this bug.
Description
•