Closed Bug 626531 Opened 14 years ago Closed 13 years ago

Valgrind warning in Compartment destructor after OOM (jscompartment.cpp:79)

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: paul.biggar, Unassigned)

References

Details

An allocation failure at allocation 29/211 in ../jit-test/tests/arguments/args-createontrace.js causes problems (detected using bug 624094)

Command (from obj directory, using patch from bug 624094):
    shell/js -A 29 -m -j -p -e "const platform='darwin'; const libdir='../jit-test/lib/';" -f ../jit-test/lib/prolog.js -f ../jit-test/tests/arguments/args-createontrace.js

stdout, stderr, exitcode: ('OOM max count: 30\n', 'out of memory\n', 1)

Diagnosis:
 - An OOM should give an exit code of 5, which is what made me notice this. that's pretty benign, but the valgrind warning looks serious.


Stack trace (from valgrind):
 Conditional jump or move depends on uninitialised value(s)
at: JSCompartment::~JSCompartment() (jscompartment.cpp:79)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7717)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7718)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7748)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7749)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7750)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7776)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7777)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7783)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7788)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7793)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7798)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7803)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7808)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: js::FinishJIT(js::TraceMonitor*) (jstracer.cpp:7813)
by: JSCompartment::~JSCompartment() (jscompartment.cpp:83)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
 
 Conditional jump or move depends on uninitialised value(s)
at: JSCompartment::~JSCompartment() (jscompartment.cpp:86)
by: js::gc::NewCompartment(JSContext*, JSPrincipals*) (jsgc.cpp:2869)
by: JS_NewCompartmentAndGlobalObject (jsapi.cpp:2959)
by: NewGlobalObject(JSContext*) (js.cpp:5342)
by: Shell(JSContext*, int, char**, char**) (js.cpp:5390)
by: main (js.cpp:5566)
(In reply to comment #0)
> An allocation failure at allocation 29/211 in
> ../jit-test/tests/arguments/args-createontrace.js causes problems (detected
> using bug 624094)

The numbers (29/211) bit rot very quickly (any update to compartments, contexts, propertytree, etc change them), and I hadn't started recording stack traces of the OOMed allocation, and I no longer treat a return code of 1 as suspect, so I can't reproduce this easily. I'll put it on the backburner, and once the OOM failures are killed, we can look at non-crashing errors caused by OOMs like this one.
I don't see this anymore.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.