Closed Bug 940025 Opened 11 years ago Closed 11 years ago

Assertion failure: ret == (-3), at jsutil.cpp

Categories

(Core :: JavaScript Engine, defect)

ARM
Linux
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: gkw, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, regression)

Attachments

(1 file)

Attached file stack
We hit OOM on ARM when we set the following parameters:

resource.setrlimit(resource.RLIMIT_CORE, (500000000, -1))
resource.setrlimit(resource.RLIMIT_AS, (400000000, -1))

and try to run a testcase that tries to allocate a bunch of memory followed by more stuff. Sometimes the following assertion gets hit:

Assertion failure: ret == (-3), at jsutil.cpp

Jesse helped me out here. Is the assert at http://hg.mozilla.org/mozilla-central/annotate/f2adb62d07eb/js/src/jsutil.cpp#l64 - " JS_ASSERT(ret == Z_DATA_ERROR); " valid?

Compressor::~Compressor()
{
    int ret = deflateEnd(&zs);
    if (ret != Z_OK) {
        // If we finished early, we can get a Z_DATA_ERROR.
        JS_ASSERT(ret == Z_DATA_ERROR);
        JS_ASSERT(uInt(zs.next_in - inp) < inplen || !zs.avail_out);
    }
}

We probably can get around this particular testcase by bumping resource.RLIMIT_AS to 500000000 instead, but I'm not sure if this is really fixing the problem.
Flags: needinfo?(benjamin)
I believe the assert is valid if zlib is following its documentation. :P Can you possibly get a debugger in there and see what the value of |ret| actually is?
Flags: needinfo?(benjamin)
No, apparently the value of ret is optimized out and this seems to require --enable-optimize --enable-debug.
Flags: needinfo?(benjamin)
You can't |printf| or something?
Flags: needinfo?(benjamin)
> You can't |printf| or something?

It shows <optimized out> in gdb, unless you mean recompiling the shell to printf the ret value just before the assert is hit?
(In reply to Gary Kwong [:gkw] [:nth10sd] (yes, still catching up on bugmail) from comment #4)
> > You can't |printf| or something?
> 
> It shows <optimized out> in gdb, unless you mean recompiling the shell to
> printf the ret value just before the assert is hit?

That is what I meant.
Hmmm, I tried going back to the same rev and reproducing this, but am unable to. I guess I'll ponder again when I hit this the next time.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: