Closed
Bug 980450
Opened 9 years ago
Closed 9 years ago
Crash [@ js::HasOwnProperty<(js::AllowGC)0>]
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
VERIFIED
FIXED
mozilla30
Tracking | Status | |
---|---|---|
firefox29 | --- | unaffected |
firefox30 | --- | fixed |
firefox-esr24 | --- | unaffected |
People
(Reporter: decoder, Assigned: bhackett1024)
Details
(5 keywords, Whiteboard: [jsbugmon:update])
Crash Data
Attachments
(2 files)
393 bytes,
text/plain
|
Details | |
833 bytes,
patch
|
luke
:
review+
|
Details | Diff | Splinter Review |
The following testcase crashes on mozilla-central revision 8122ffa9e1aa (run with --fuzzing-safe): var f32 = new Float32Array(1); for(var n = 100; n; --n) f32.hasOwnProperty(4)
Reporter | ||
Comment 1•9 years ago
|
||
Reporter | ||
Comment 2•9 years ago
|
||
Crash trace: Program received signal SIGSEGV, Segmentation fault. js::HasOwnProperty<(js::AllowGC)0> (cx=0x181e7a0, lookup=<optimized out>, obj=0x7ffff615bdc0, id=..., objp=..., propp=...) at js/src/jsobj.cpp:4283 4283 if (JSObjectOp op = objp->getClass()->ext.outerObject) { #0 js::HasOwnProperty<(js::AllowGC)0> (cx=0x181e7a0, lookup=<optimized out>, obj=0x7ffff615bdc0, id=..., objp=..., propp=...) at js/src/jsobj.cpp:4283 #1 0x0000000000494dc1 in obj_hasOwnProperty (cx=0x181e7a0, argc=<optimized out>, vp=0x7fffffffbe48) at js/src/builtin/Object.cpp:641 #2 0x000000000096b9e1 in js::CallJSNative (cx=0x181e7a0, native=0x494c70 <obj_hasOwnProperty(JSContext*, unsigned int, JS::Value*)>, args=...) at js/src/jscntxtinlines.h:239 #3 0x0000000000962521 in js::Invoke (cx=0x181e7a0, args=..., construct=js::NO_CONSTRUCT) at js/src/vm/Interpreter.cpp:476 #4 0x00000000009632d7 in js::Invoke (cx=0x181e7a0, thisv=..., fval=..., argc=<optimized out>, argv=0x7fffffffc4a0, rval=...) at js/src/vm/Interpreter.cpp:532 #5 0x00000000005c29a6 in js::jit::DoCallFallback (cx=0x181e7a0, frame=0x7fffffffc4e0, stub=0x1868940, argc=1, vp=0x7fffffffc490, res=...) at js/src/jit/BaselineIC.cpp:8090 #6 0x00007ffff7fefded in ?? () #7 0x0000003801868610 in ?? () rax 0x200 512 => 0x89ce5e <js::HasOwnProperty<(js::AllowGC)0>(JSContext*, bool (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::MutableHandle<JSObject*>, JS::MutableHandle<js::Shape*>), js::MaybeRooted<JSObject*, (js::AllowGC)0>::HandleType, js::MaybeRooted<jsid, (js::AllowGC)0>::HandleType, js::MaybeRooted<JSObject*, (js::AllowGC)0>::MutableHandleType, js::MaybeRooted<js::Shape*, (js::AllowGC)0>::MutableHandleType)+286>: mov (%rax),%rdx The crash could be a null-deref but the offset is fairly large, marking s-s until triaged properly.
status-firefox30:
--- → affected
Whiteboard: [jsbugmon:update,bisect]
Reporter | ||
Comment 3•9 years ago
|
||
Fwiw, here's an ASan trace: ==5454==ERROR: AddressSanitizer: SEGV on unknown address 0x02005fff8006 (pc 0x000000efb197 sp 0x7fffa3d6b720 bp 0x7fffa3d6b7f0 T0) AddressSanitizer can not provide additional info. #0 0xefb196 in js::BarrieredPtr<js::types::TypeObject, unsigned long>::operator->() const js/src/gc/Barrier.h:322 #1 0xefb196 in js::ObjectImpl::getClass() const js/src/vm/ObjectImpl.h:1003 #2 0xefb196 in bool js::HasOwnProperty<(js::AllowGC)0>(JSContext*, bool (*)(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::MutableHandle<JSObject*>, JS::MutableHandle<js::Shape*>), js::MaybeRooted<JSObject*, (js::AllowGC)0>::HandleType, js::MaybeRooted<jsid, (js::AllowGC)0>::HandleType, js::MaybeRooted<JSObject*, (js::AllowGC)0>::MutableHandleType, js::MaybeRooted<js::Shape*, (js::AllowGC)0>::MutableHandleType) js/src/jsobj.cpp:4283 #3 0x5c6f56 in obj_hasOwnProperty(JSContext*, unsigned int, JS::Value*) js/src/builtin/Object.cpp:641 #4 0x101eb80 in JSFunction::native() const js/src/jscntxtinlines.h:239 #5 0x101eb80 in js::Invoke(JSContext*, JS::CallArgs, js::MaybeConstruct) js/src/vm/Interpreter.cpp:476 #6 0x10201e8 in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value const*, JS::MutableHandle<JS::Value>) js/src/vm/Interpreter.cpp:532 #7 0x8420a1 in js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) js/src/jit/BaselineIC.cpp:8090 SUMMARY: AddressSanitizer: SEGV js/src/gc/Barrier.h:322 js::BarrieredPtr<js::types::TypeObject, unsigned long>::operator->() const Looks like the operator is trying to deref an invalid object pointer, assuming sec-critical. Please correct if that's wrong :)
Keywords: csectype-wildptr,
sec-critical
Updated•9 years ago
|
Group: javascript-core-security
Reporter | ||
Updated•9 years ago
|
Whiteboard: [jsbugmon:update,bisect] → [jsbugmon:update]
Reporter | ||
Comment 4•9 years ago
|
||
JSBugMon: Bisection requested, result: === Tinderbox Build Bisection Results by autoBisect === The "good" changeset has the timestamp "20140304112656" and the hash "703bd71926e4". The "bad" changeset has the timestamp "20140304114257" and the hash "78fa90a29c43". Likely regression window: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=703bd71926e4&tochange=78fa90a29c43
Reporter | ||
Comment 5•9 years ago
|
||
Needinfo from bhackett based on comment 4, likely regressed by bug 695438.
Flags: needinfo?(bhackett1024)
Assignee | ||
Comment 6•9 years ago
|
||
The outparams in LookupOwnPropertyWithFlagsInline weren't always being initialized.
Assignee: nobody → bhackett1024
Attachment #8387571 -
Flags: review?(luke)
Flags: needinfo?(bhackett1024)
Updated•9 years ago
|
status-firefox29:
--- → unaffected
![]() |
||
Updated•9 years ago
|
Attachment #8387571 -
Flags: review?(luke) → review+
Assignee | ||
Comment 7•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/5f7a9e12219a
Comment 8•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/5f7a9e12219a Can we land the test please?
Status: NEW → RESOLVED
Closed: 9 years ago
Flags: in-testsuite?
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Reporter | ||
Updated•9 years ago
|
Status: RESOLVED → VERIFIED
Reporter | ||
Comment 9•9 years ago
|
||
JSBugMon: This bug has been automatically verified fixed.
Assignee | ||
Comment 10•9 years ago
|
||
Push for the test: https://hg.mozilla.org/integration/mozilla-inbound/rev/71e286533bd9
Comment 11•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/71e286533bd9
Flags: in-testsuite? → in-testsuite+
Updated•9 years ago
|
Group: javascript-core-security
Updated•9 years ago
|
status-firefox-esr24:
--- → unaffected
Updated•8 years ago
|
Group: core-security
You need to log in
before you can comment on or make changes to this bug.
Description
•