Closed
Bug 923892
Opened 11 years ago
Closed 11 years ago
Crash [@ getGeneric]
Categories
(Core :: JavaScript Engine: JIT, defect)
Tracking
()
RESOLVED
FIXED
mozilla27
Tracking | Status | |
---|---|---|
firefox26 | --- | unaffected |
firefox27 | --- | fixed |
firefox-esr24 | --- | unaffected |
b2g18 | --- | unaffected |
b2g-v1.1hd | --- | unaffected |
b2g-v1.2 | --- | unaffected |
People
(Reporter: gkw, Assigned: bhackett1024)
References
Details
(4 keywords, Whiteboard: [jsbugmon:][qa-])
Attachments
(2 files)
(deleted),
text/plain
|
Details | |
(deleted),
patch
|
jandem
:
review+
|
Details | Diff | Splinter Review |
function f(code) {
gc()
eval(code)
}
f("\
s0='';\
a1=[];\
a2=[];\
for(v of a1) {\
(function(){})\
};\
for(var x=0;x<63;++x) {\
Array.prototype.push.call(a2,0)\
}\
");
f("\
Array.prototype.sort.call(a2,(function(){\
for(v of s0) {\
(function(){\
c\
})\
}\
}))\
")
intermittently crashes js opt shell (tested with a threadsafe deterministic 64-bit debug build) on m-c changeset b5d24ef1eb37 with --ion-parallel-compile=on --ion-eager at getGeneric
My configure options are:
sh ./configure --enable-optimize --disable-debug --enable-profiling --enable-gczeal --enable-debug-symbols --enable-methodjit --enable-type-inference --disable-tests --enable-more-deterministic --enable-exact-rooting --enable-gcgenerational --with-ccache --enable-threadsafe <other NSPR options>
Comment 1•11 years ago
|
||
This testcase causes a crash for me even in normal debug builds, without GGC:
Catchpoint 1 (signal SIGSEGV), js::EncapsulatedPtr<js::BaseShape, unsigned long>::get (this=0x8) at ../../gc/Barrier.h:287
287 in ../../gc/Barrier.h
(gdb) bt
#0 js::EncapsulatedPtr<js::BaseShape, unsigned long>::get (this=0x8) at ../../gc/Barrier.h:287
#1 0x0000000000423485 in js::Shape::base (this=0x8) at ../../vm/Shape.h:1142
#2 0x00000000004251cd in js::ObjectImpl::compartment (this=0x7ffff57239a0) at ../../vm/ObjectImpl.h:1175
#3 0x00000000004980f2 in js::CompartmentChecker::check (this=0x7fffffff9a48, obj=(JSObject *) 0x7ffff57239a0 Cannot access memory at address 0x8) at ../jscntxtinlines.h:72
#4 0x00000000004a7603 in js::CompartmentChecker::check (this=0x7fffffff9a48, v=...) at ../jscntxtinlines.h:87
#5 0x00000000006338e0 in js::assertSameCompartment<JS::Rooted<JS::Value> > (cx=0x1adeed0, t1=...) at ../jscntxtinlines.h:145
#6 0x0000000000716fb7 in JS_ArrayIterator (cx=0x1adeed0, argc=0, vp=0x7fffffff9b58) at /home/jon/work/rooting/js/src/jsapi.cpp:3904
#7 0x00007ffff7f792e9 in ?? ()
#8 0x00007fffffff9b70 in ?? ()
#9 0x00007fffffff9b30 in ?? ()
#10 0x0000000000000000 in ?? ()
No longer blocks: ggcfuzz
Summary: GenerationalGC: Crash [@ getGeneric] → Fuzz crash [@ getGeneric]
Comment 2•11 years ago
|
||
It must have regressed between 149706:1328ae9ac634 and b5d24ef1eb37. The hotel's wireless was not up for an |hg pull| and I was not able to reproduce on my local tip.
Comment 3•11 years ago
|
||
It looks like the problem is a pointer to a JSString is being is being treated as a pointer to a JSObject here.
Comment 4•11 years ago
|
||
Marked s-s based on comment 3.
Jonco, can this be exploited in some way?
Group: core-security
Comment 5•11 years ago
|
||
Can we bisect to find a regressor? I'd guess the recent changes to array iterations are implicated, based on the stack.
Updated•11 years ago
|
Whiteboard: [jsbugmon:update,bisect]
Comment 6•11 years ago
|
||
> No longer blocks: 877471
This may have turned out not to be a crash in GGC, but the dependency link helps us track the effectiveness of our fuzzers. Fuzz tests quite often find bugs outside the feature the are ostensibly testing.
Blocks: ggcfuzz
Whiteboard: [jsbugmon:update,bisect]
Updated•11 years ago
|
Whiteboard: [jsbugmon:update,bisect]
Updated•11 years ago
|
Whiteboard: [jsbugmon:update,bisect] → [jsbugmon:bisect]
Comment 7•11 years ago
|
||
JSBugMon: Cannot process bug: Unable to automatically reproduce, please track manually.
Reporter | ||
Comment 8•11 years ago
|
||
(In reply to Christian Holler (:decoder) from comment #7)
> JSBugMon: Cannot process bug: Unable to automatically reproduce, please
> track manually.
I'll need to start a manual bisect running it using the "range" interestingness test that tries this intermittent testcase repeatedly before calling it "good" or "bad", putting it on my plate.
Flags: needinfo?(gary)
Reporter | ||
Updated•11 years ago
|
Reporter | ||
Updated•11 years ago
|
Flags: needinfo?(gary)
Summary: Fuzz crash [@ getGeneric] → Crash [@ getGeneric]
Reporter | ||
Comment 9•11 years ago
|
||
autoBisect shows this is probably related to the following changeset:
The first bad revision is:
changeset: http://hg.mozilla.org/mozilla-central/rev/48582b2df0af
user: Brian Hackett
date: Thu Oct 03 21:44:13 2013 -0600
summary: Bug 921902 - Separate generation and attaching of heap property type constraints, r=jandem.
Brian, is bug 921902 a likely regressor?
Assignee | ||
Comment 11•11 years ago
|
||
Off thread compilations were not always being canceled on type changes to a script, due to an unnecessary check that is now incorrect --- there can be in progress compilations even if there are no compiler outputs, since the compiler outputs aren't created until the compilation finishes. While we don't in general want to rely on stack type sets being 'correct' in any way for Ion code, the Ion optimization that elides argument type checks for direct Ion -> Ion calls does rely on this to some degree --- any IonScript must handle all types in the script's this/arguments type sets.
Assignee: general → bhackett1024
Attachment #815413 -
Flags: review?(jdemooij)
Flags: needinfo?(bhackett1024)
Updated•11 years ago
|
Attachment #815413 -
Flags: review?(jdemooij) → review+
Assignee | ||
Comment 12•11 years ago
|
||
Reporter | ||
Comment 13•11 years ago
|
||
This was landed recently on m-c:
http://hg.mozilla.org/mozilla-central/rev/371ed1f8661f
Status: NEW → RESOLVED
Closed: 11 years ago
status-firefox27:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla27
Reporter | ||
Updated•11 years ago
|
Flags: in-testsuite?
Comment 14•11 years ago
|
||
Cleaning up list of security bugs for b2g18. This bug doesn't need to be backported either due to it affecting a later version of Fx or another reason.
status-b2g18:
--- → unaffected
Reporter | ||
Updated•11 years ago
|
Component: JavaScript Engine → JavaScript Engine: JIT
Updated•11 years ago
|
status-b2g-v1.1hd:
--- → unaffected
status-b2g-v1.2:
--- → unaffected
status-firefox-esr24:
--- → unaffected
Comment 15•11 years ago
|
||
Marking Firefox 26 as unaffected based on regression date.
status-firefox26:
--- → unaffected
Updated•10 years ago
|
Group: core-security
You need to log in
before you can comment on or make changes to this bug.
Description
•