Last Comment Bug 698299 - "Assertion failure: !ret && cx->isExceptionPending()" in SecurityWrapper::nativeCall
: "Assertion failure: !ret && cx->isExceptionPending()" in SecurityWrapper::nat...
Status: RESOLVED FIXED
: assertion, testcase
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: Trunk
: x86_64 Mac OS X
: -- critical (vote)
: mozilla11
Assigned To: Luke Wagner [:luke]
:
Mentors:
Depends on:
Blocks: 326633 594645
  Show dependency treegraph
 
Reported: 2011-10-30 13:57 PDT by Jesse Ruderman
Modified: 2011-11-11 02:26 PST (History)
6 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
testcase (asserts fatally when loaded) (292 bytes, text/html)
2011-10-30 13:57 PDT, Jesse Ruderman
no flags Details
stack trace (5.03 KB, text/plain)
2011-10-30 13:57 PDT, Jesse Ruderman
no flags Details
rm assert (1.00 KB, patch)
2011-11-07 08:15 PST, Luke Wagner [:luke]
mrbkap: review+
Details | Diff | Splinter Review

Description Jesse Ruderman 2011-10-30 13:57:05 PDT
Assertion failure: !ret && cx->isExceptionPending(), at js/src/jswrapper.cpp:866

The code containing the assertion was added in:

changeset:   949c2cf4c772
user:        Luke Wagner
date:        Tue Oct 04 10:50:25 2011 -0700
summary:     Bug 690825 - Add a SecurityWrapper base between JS transparent wrappers and XPConnect security wrappers (r=mrbkap)
Comment 1 Jesse Ruderman 2011-10-30 13:57:23 PDT
Created attachment 570570 [details]
testcase (asserts fatally when loaded)
Comment 2 Jesse Ruderman 2011-10-30 13:57:39 PDT
Created attachment 570571 [details]
stack trace
Comment 3 Johnny Stenback (:jst, jst@mozilla.com) 2011-11-03 13:58:58 PDT
Luke, can you look into this? Also, guessing sg:critical here, but I'm happy to downgrade this if it's not that severe.
Comment 4 Luke Wagner [:luke] 2011-11-06 17:24:50 PST
Ah, the assert is bogus: it asserts that, if we return false, an exception is pending.  This is not true if we have arrived without pushing a stack frame (in the testcase: via setTimeout + bound function object) in which case ReportError chooses not to throw but to instead report immediately (leaving no exception pending).
Comment 5 Luke Wagner [:luke] 2011-11-07 08:15:08 PST
Created attachment 572477 [details] [diff] [review]
rm assert

Oops, my previous description of the assert ("it asserts that, if we return false, an exception is pending") is wrong; I should have said: "it asserts that we return false AND an exception is pending").  Same conclusion though: bogus assert.
Comment 7 Marco Bonardo [::mak] 2011-11-11 02:26:30 PST
https://hg.mozilla.org/mozilla-central/rev/71046de4fb6a

Note You need to log in before you can comment on or make changes to this bug.