Closed Bug 856877 Opened 11 years ago Closed 11 years ago

JSRuntime::interrupt isn't initialized

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla23

People

(Reporter: n.nethercote, Assigned: n.nethercote)

Details

(Whiteboard: [js:t])

Attachments

(1 file)

jit-test/tests/basic/testShiftLeft.js and
jit-test/tests/basic/testRegExpTest.js are failing when the jit-tests are run
with --valgrind.

In both cases there are five errors;  the first four are the same in both, but
the last one differs.  They probably have the same root cause, though.  It
looks like JSRuntime::interrupt isn't initialized in the constructor.  Details
below.

As much as I want these fixed, I want even more to know why they didn't show up
on TBPL.  Gary, do we not run jit-tests with --valgrind?  We should.  That only
enabled Valgrind on a small number of tests (3, IIRC) so it doesn't slow things
down much.  Should I file a separate bug?


testShiftLeft.js

> ==31832== Conditional jump or move depends on uninitialised value(s)
> ==31832==    at 0x5D75A8: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1501)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31832==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31832==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31832==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31832==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31832==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31832==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31832==    by 0x405839: NewContext(JSRuntime*) (js.cpp:4744)
> ==31832==    by 0x405575: main (js.cpp:5325)
> ==31832== 
> ==31832== Conditional jump or move depends on uninitialised value(s)
> ==31832==    at 0x5D75A8: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1501)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5EFB15: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:398)
> ==31832==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31832==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31832==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31832==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31832==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31832==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31832==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31832== 
> ==31832== Conditional jump or move depends on uninitialised value(s)
> ==31832==    at 0x5D69BD: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1367)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5EFB15: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:398)
> ==31832==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31832==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31832==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31832==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31832==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31832==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31832==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31832== 
> ==31832== Conditional jump or move depends on uninitialised value(s)
> ==31832==    at 0x5D69BD: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1367)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31832==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31832==    by 0x483C11: JS_ExecuteScript(JSContext*, JSObject*, JSScript*, JS::Value*) (jsapi.cpp:5579)
> ==31832==    by 0x407107: Process(JSContext*, JSObject*, char const*, bool) (js.cpp:468)
> ==31832==    by 0x40494B: ProcessArgs(JSContext*, JSObject*, js::cli::OptionParser*) (js.cpp:5062)
> ==31832==    by 0x403672: Shell(JSContext*, js::cli::OptionParser*, char**) (js.cpp:5114)
> ==31832==    by 0x405619: main (js.cpp:5338)
> ==31832== 
> ==31832== Conditional jump or move depends on uninitialised value(s)
> ==31832==    at 0x4C1400: array_join_sub(JSContext*, JS::CallArgs&, bool) (jscntxt.h:2104)
> ==31832==    by 0x4BB8C2: array_join(JSContext*, unsigned int, JS::Value*) (jsarray.cpp:869)
> ==31832==    by 0x5EF931: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jscntxtinlines.h:338)
> ==31832==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31832==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31832==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31832==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31832==    by 0x483C11: JS_ExecuteScript(JSContext*, JSObject*, JSScript*, JS::Value*) (jsapi.cpp:5579)
> ==31832==    by 0x407107: Process(JSContext*, JSObject*, char const*, bool) (js.cpp:468)
> ==31832==    by 0x40494B: ProcessArgs(JSContext*, JSObject*, js::cli::OptionParser*) (js.cpp:5062)
> ==31832==    by 0x403672: Shell(JSContext*, js::cli::OptionParser*, char**) (js.cpp:5114)
> ==31832==    by 0x405619: main (js.cpp:5338)
> ==31832== 


testRegExpTest.js:

> ==31828== Conditional jump or move depends on uninitialised value(s)
> ==31828==    at 0x5D75A8: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1501)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31828==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31828==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31828==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31828==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31828==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31828==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31828==    by 0x405839: NewContext(JSRuntime*) (js.cpp:4744)
> ==31828==    by 0x405575: main (js.cpp:5325)
> ==31828== 
> ==31828== Conditional jump or move depends on uninitialised value(s)
> ==31828==    at 0x5D75A8: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1501)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5EFB15: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:398)
> ==31828==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31828==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31828==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31828==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31828==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31828==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31828==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31828== 
> ==31828== Conditional jump or move depends on uninitialised value(s)
> ==31828==    at 0x5D69BD: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1367)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5EFB15: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:398)
> ==31828==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31828==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31828==    by 0x484169: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (jsapi.cpp:5622)
> ==31828==    by 0x4843B4: JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned long, JS::Value*) (jsapi.cpp:5652)
> ==31828==    by 0x8FCF98: JSRuntime::initSelfHosting(JSContext*) (SelfHosting.cpp:549)
> ==31828==    by 0x4ECD18: js::NewContext(JSRuntime*, unsigned long) (jscntxt.cpp:356)
> ==31828==    by 0x464A3C: JS_NewContext(JSRuntime*, unsigned long) (jsapi.cpp:1265)
> ==31828== 
> ==31828== Conditional jump or move depends on uninitialised value(s)
> ==31828==    at 0x5D69BD: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:1367)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==    by 0x5F2152: js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) (jsinterp.cpp:529)
> ==31828==    by 0x5F256C: js::Execute(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value*) (jsinterp.cpp:568)
> ==31828==    by 0x483C11: JS_ExecuteScript(JSContext*, JSObject*, JSScript*, JS::Value*) (jsapi.cpp:5579)
> ==31828==    by 0x407107: Process(JSContext*, JSObject*, char const*, bool) (js.cpp:468)
> ==31828==    by 0x40494B: ProcessArgs(JSContext*, JSObject*, js::cli::OptionParser*) (js.cpp:5062)
> ==31828==    by 0x403672: Shell(JSContext*, js::cli::OptionParser*, char**) (js.cpp:5114)
> ==31828==    by 0x405619: main (js.cpp:5338)
> ==31828== 
> ==31828== Conditional jump or move depends on uninitialised value(s)
> ==31828==    at 0xC6C780: JSC::Yarr::Interpreter<unsigned short>::matchDisjunction(JSC::Yarr::ByteDisjunction*, JSC::Yarr::Interpreter<unsigned short>::DisjunctionContext*, bool) (jscntxt.h:2104)
> ==31828==    by 0xC646D2: JSC::Yarr::Interpreter<unsigned short>::interpret() (YarrInterpreter.cpp:1441)
> ==31828==    by 0xC64AFF: JSC::Yarr::interpret(JSContext*, JSC::Yarr::BytecodePattern*, unsigned short const*, unsigned int, unsigned int, unsigned int*) (YarrInterpreter.cpp:1968)
> ==31828==    by 0x92F80D: js::RegExpShared::executeMatchOnly(JSContext*, unsigned short const*, unsigned long, unsigned long*, js::MatchPair&) (RegExpObject.cpp:615)
> ==31828==    by 0x93919B: ExecuteRegExpImpl(JSContext*, js::RegExpStatics*, js::RegExpShared&, JS::Handle<JSLinearString*>, unsigned short const*, unsigned long, unsigned long*, js::MatchConduit&) (RegExp.cpp:128)
> ==31828==    by 0x93A7A5: js::ExecuteRegExp(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSString*>, js::MatchConduit&) (RegExp.cpp:597)
> ==31828==    by 0x93C640: ExecuteRegExp(JSContext*, JS::CallArgs, js::MatchConduit&) (RegExp.cpp:625)
> ==31828==    by 0x93B181: regexp_test_impl(JSContext*, JS::CallArgs) (RegExp.cpp:671)
> ==31828==    by 0x93B0A2: js::regexp_test(JSContext*, unsigned int, JS::Value*) (jsapi.h:767)
> ==31828==    by 0x5EF931: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jscntxtinlines.h:338)
> ==31828==    by 0x5E5F57: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) (jsinterp.cpp:2357)
> ==31828==    by 0x5D5005: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:341)
> ==31828==
This stops Valgrind complaining.
Attachment #732135 - Flags: review?(wmccloskey)
Comment on attachment 732135 [details] [diff] [review]
Initialize JSRuntime::interrupt.

Review of attachment 732135 [details] [diff] [review]:
-----------------------------------------------------------------

Oops. Regressed in bug 852802. Thanks for catching.
Attachment #732135 - Flags: review?(wmccloskey) → review+
> As much as I want these fixed, I want even more to know why they didn't show up
> on TBPL.  Gary, do we not run jit-tests with --valgrind?  We should.  That only
> enabled Valgrind on a small number of tests (3, IIRC) so it doesn't slow things
> down much.  Should I file a separate bug?

I filed bug 856880.
https://hg.mozilla.org/mozilla-central/rev/e7ac9fca699c
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla23
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: