Closed Bug 1205870 Opened 9 years ago Closed 9 years ago

Crash [@ js::UnboxedArrayObject::create]

Categories

(Core :: JavaScript Engine: JIT, defect)

x86_64
macOS
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla44
Tracking Status
firefox43 --- affected
firefox44 --- fixed

People

(Reporter: gkw, Assigned: bhackett1024)

References

Details

(Keywords: crash, regression, testcase, Whiteboard: [jsbugmon:])

Crash Data

Attachments

(2 files)

function f(x) {
     f(x.slice(1));
}
f([
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false, false, false, false, false, false,
     false, false, false, false, false
]);

crashes js debug shell on m-c changeset de0e763b5210 with --fuzzing-safe --no-threads --ion-eager --unboxed-arrays at js::UnboxedArrayObject::create.

Configure options:

CC="clang -Qunused-arguments" CXX="clang++ -Qunused-arguments" AR=ar AUTOCONF=/usr/local/Cellar/autoconf213/2.13/bin/autoconf213 sh /Users/skywalker/trees/mozilla-central/js/src/configure --target=x86_64-apple-darwin12.5.0 --enable-debug --enable-nspr-build --enable-more-deterministic --with-ccache --enable-gczeal --enable-debug-symbols --disable-tests

python -u ~/funfuzz/js/compileShell.py -b "--enable-debug --enable-more-deterministic --enable-nspr-build" -r de0e763b5210

autoBisect shows this is probably related to the following changeset:

The first bad revision is:
changeset:   https://hg.mozilla.org/mozilla-central/rev/3a994e364343
user:        Brian Hackett
date:        Sat Jun 13 07:54:06 2015 -0700
summary:     Bug 1172943 - Use unboxed arrays for JSON and script literal arrays, r=jandem.

Brian, is bug 1172943 a likely regressor?
Flags: needinfo?(bhackett1024)
Attached file stack
(lldb) bt 5
* thread #1: tid = 0x70c372, 0x00000001003a85ea js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`js::UnboxedArrayObject::create(js::ExclusiveContext*, JS::Handle<js::ObjectGroup*>, unsigned int, js::NewObjectKind, unsigned int) [inlined] js::UnboxedArrayObject::exactCapacityIndex(capacity=<unavailable>) + 113 at UnboxedObject.cpp:1337, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x00000001003a85ea js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`js::UnboxedArrayObject::create(js::ExclusiveContext*, JS::Handle<js::ObjectGroup*>, unsigned int, js::NewObjectKind, unsigned int) [inlined] js::UnboxedArrayObject::exactCapacityIndex(capacity=<unavailable>) + 113 at UnboxedObject.cpp:1337
    frame #1: 0x00000001003a8579 js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`js::UnboxedArrayObject::create(cx=0x000000010284c400, group=<unavailable>, length=<unavailable>, newKind=GenericObject, maxLength=<unavailable>) + 425 at UnboxedObject.cpp:1089
    frame #2: 0x0000000100083403 js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`JSObject* NewArrayTryUseGroup<4294967295u>(cx=0x000000010284c400, group=<unavailable>, length=<unavailable>, newKind=TenuredObject, forceAnalyze=<unavailable>) + 819 at jsarray.cpp:3464
    frame #3: 0x000000010007e5c3 js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`js::NewFullyAllocatedArrayTryReuseGroup(JSContext*, JSObject*, unsigned long, js::NewObjectKind, bool) [inlined] JSObject* NewArrayTryReuseGroup<4294967295u>(obj=<unavailable>) + 166 at jsarray.cpp:3519
    frame #4: 0x000000010007e51d js-dbg-64-dm-nsprBuild-darwin-de0e763b5210`js::NewFullyAllocatedArrayTryReuseGroup(cx=0x000000010284c400, obj=<unavailable>, length=73, newKind=GenericObject, forceAnalyze=false) + 29 at jsarray.cpp:3526
(lldb)
Whiteboard: [jsbugmon:update] → [jsbugmon:]
JSBugMon: Cannot process bug: Unable to automatically reproduce, please track manually.
Attached patch patchSplinter Review
Another inline capacity which the UnboxedArrayObject CapacityArray doesn't account for.  I think I said this after the last bug like this but I finally went and wrote a script to find all the inline capacities, which is included with this patch.  This patch also has a test to make sure we can create unboxed arrays of any possible inline capacity.
Assignee: nobody → bhackett1024
Flags: needinfo?(bhackett1024)
Attachment #8663320 - Flags: review?(jdemooij)
Attachment #8663320 - Flags: review?(jdemooij) → review+
Brian, is it possible that one of your patches from this push http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=6c84c452a23d&tochange=e40aeb2ee512 broke unboxed objects and regressed Octane-RegExp (both things happened only on Mac 32-bit on AWFY)?
Flags: needinfo?(bhackett1024)
https://hg.mozilla.org/mozilla-central/rev/03ac65b27fad
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla44
(In reply to Guilherme Lima from comment #5)
> Brian, is it possible that one of your patches from this push
> http://hg.mozilla.org/integration/mozilla-inbound/
> pushloghtml?fromchange=6c84c452a23d&tochange=e40aeb2ee512 broke unboxed
> objects and regressed Octane-RegExp (both things happened only on Mac 32-bit
> on AWFY)?

I think bug 1207821 will fix the broken unboxed objects line.  I don't see a regression on octane-regexp, looking at the current state of AWFY.
Flags: needinfo?(bhackett1024)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: