Closed Bug 1301608 Opened 8 years ago Closed 8 years ago

Assertion failure: (l.asBits >> 47) <= JSVAL_TAG_OBJECT, at /Users/skywalker/shell-cache/js-dbg-64-dm-clang-darwin-176aff980979/objdir-js/dist/include/js/Value.h:807

Categories

(Core :: JavaScript Engine, defect)

x86_64
macOS
defect
Not set
critical

Tracking

()

RESOLVED DUPLICATE of bug 1293311
Tracking Status
firefox51 --- affected

People

(Reporter: gkw, Unassigned)

Details

(Keywords: assertion, bugmon, testcase, Whiteboard: [jsbugmon:update])

Attachments

(1 file)

The following testcase crashes on mozilla-central revision 176aff980979 (build with --enable-debug --enable-more-deterministic, run with --fuzzing-safe --no-threads):

function h(f) {
    for (var j = 0; j < 7500; ++j) {
        try {
            f();
        } catch (e) {}
    }
}
(function() {
    oomTest(Number.prototype.toPrecision.bind(-this.__defineSetter__("x", arguments.callee)));
    g = function() {
        new Uint8Array
        function f() {}
        return f
    }()
    h(g, [, , , , , , , 0, , , , , , 0, 0, 0, , , , , 0, , ]);
    h(function() {
        x = /y/;
    });
})();


Backtrace:

0   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fd9ea2 decltype(fp(static_cast<JSObject*>(std::nullptr_t)mozilla::Forward<js::TenuringTracer*>(fp1))) js::DispatchTyped<js::TenuringTraversalFunctor<JS::Value>, js::TenuringTracer*>(js::TenuringTraversalFunctor<JS::Value>, JS::Value const&, js::TenuringTracer*&&) + 434 (Value.h:807)
1   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fca4f8 void DispatchToTracer<JS::Value>(JSTracer*, JS::Value*, char const*) + 72 (Marking.cpp:2241)
2   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fca8e6 void js::TraceRootRange<JS::Value>(JSTracer*, unsigned long, JS::Value*, char const*) + 310 (IntegerRange.h:77)
3   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fc2bbb js::gc::GCRuntime::traceRuntimeCommon(JSTracer*, js::gc::GCRuntime::TraceOrMarkRuntime, js::AutoLockForExclusiveAccess&) + 123 (RootMarking.cpp:226)
4   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fbfa42 js::Nursery::doCollection(JSRuntime*, JS::gcreason::Reason, js::gc::TenureCountCache&) + 1090 (RootMarking.cpp:304)
5   js-dbg-64-dm-clang-darwin-176aff980979	0x0000000109fbefc5 js::Nursery::collect(JSRuntime*, JS::gcreason::Reason) + 373 (Nursery.cpp:574)
/snip

For detailed crash information, see attachment.

Setting s-s as a start because GC is on the stack, even though it seems to involve oomTest.
thread 8
  allocation 1
  finished after 0 allocations
thread 1
  allocation 1
ReportOutOfMemory called
Assertion failure: (l.asBits >> 47) <= JSVAL_TAG_OBJECT, at /Users/skywalker/shell-cache/js-dbg-64-dm-clang-oombp-darwin-176aff980979/objdir-js/dist/include/js/Value.h:807
Process 22846 stopped
* thread #1: </snip>

I am unable to get an OOM_VERBOSE=1 stack because I do not know how many allocations have passed before the assertion is hit.
=== Treeherder Build Bisection Results by autoBisect ===

The "good" changeset has the timestamp "20160907034116" and the hash "f590934ef71f3fb00a7339c992677eda891d3705".
The "bad" changeset has the timestamp "20160907035016" and the hash "b48c0088fad27760cbae9733af3d6e3e0afad5df".

Likely regression window: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=f590934ef71f3fb00a7339c992677eda891d3705&tochange=b48c0088fad27760cbae9733af3d6e3e0afad5df

Jan, is bug 1296015 a likely regressor?
Flags: needinfo?(jdemooij)
I'm looking into this now. Stack corruption, a bit of a pain to track down.
(In reply to Gary Kwong [:gkw] [:nth10sd] from comment #3)
> Jan, is bug 1296015 a likely regressor?

I can reproduce a similar memory corruption crash @ the parent revision. Still digging.
Duplicate of bug 1293311. That's what I get for not landing patches immediately :/
Status: NEW → RESOLVED
Closed: 8 years ago
Flags: needinfo?(jdemooij)
Resolution: --- → DUPLICATE
Group: javascript-core-security
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: