[Webkit-unassigned] [Bug 93607] Web Inspector: [JSC] Caught exception is treated as uncaught

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Sep 10 00:10:31 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=93607





--- Comment #9 from Joseph Pecoraro <joepeck at webkit.org>  2013-09-10 00:09:44 PST ---
(In reply to comment #7)
> (From update of attachment 211132 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=211132&action=review
> 
> Thanks, Joe!
> 
> r=me, but please fix the logic error below, and add a test for it.
> 
> > Source/JavaScriptCore/interpreter/Interpreter.cpp:582
> > +        if (!codeBlock)
> > +            return StackVisitor::Done;
> 
> I think you want StackVisitor::Continue here.
> 
> Consider this stack:
>     js function with try/catch scope => Array.prototype.map => js function => throw
> CodeBlock is null for host functions. Therefore, when you see Array.prototype.map, you'll return StackVisitor::Done and conclude that there's no handler. But there is a handler, in the function that called map.

Good catch and thanks for the example! That indeed fixes a issue. It also uncovered a somewhat surprising double pause.

Given:

    function exceptionInHostFunction()
    {
        [1].map(function(x) {
            throw "exception in host function";
        });
    }

Setting the inspector to break on all exceptions, and evaluating: setTimeout(exceptionHostFunction, 0);

The inspector pauses twice:

  1. At the throw line. Continuing in Web Inspector goes to (2)
  2. At the [].map line. Continuing in Web Inspector no longer pauses.

I'll take a brief look at this. It exists separate from this issue/patch, but affects the tests I'm writing for this patch.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list