Sorry, I'm not sure if I understand your example...

On Wed, Nov 7, 2018 at 2:21 AM Yutaka Hirano <yhir...@chromium.org> wrote:

> +ricea@
>
> On Wed, Nov 7, 2018 at 6:44 PM Yuki Shiino <yukishi...@chromium.org>
> wrote:
>
>> Hi V8-team and platform-architecture-dev,
>>
>> TL;DR: We'd like to extend v8::TryCatch APIs a little.
>>
>> We're having an issue how to handle worker termination, i.e. v8::Isolate
>> termination.  Roughly speaking, the situation is like below.
>>
>> Main thread:
>>     v8::Isolate* worker_isolate = ...;
>>     worker_isolate->TerminateExecution();  // Terminates the worker
>> isolate.
>>
>> Worker thread (worker isolate):
>>     v8::TryCatch try_catch(isolate);
>>     DoSomethingWithV8();  // The Isolate terminates here.
>>     if (try_catch.HasCaught()) {  // => true due to termination
>>       // Handle error or termination.
>>       return;
>>     }
>>
>> No problem so far.  Worker thread MUST NOT run any V8 code no longer
>> because the Isolate is terminating.  However, Blink is not perfect, and
>> it's pretty tough for Blink to stop everything with 100% correctness.
>> Occasionally (or rarely) Blink continues running more V8 code like below.
>>
>> Worker thread (worker isolate):
>>     v8::TryCatch try_catch(isolate);
>>     DoSomethingElseWithV8();
>>     if (try_catch.HasCaught()) {  // => false because no new exception is
>> thrown inside the v8::TryCatch.
>>       return;  // Blink doesn't reach here.
>>     }
>>     // Blink reach here instead.  :(
>>
>> If v8::TryCatch::HasCaught() returned true, Blink would be able to handle
>> it as error and Blink would work much better than now (Blink is now
>> crashing).
>>
>
Are you assuming that the worker is terminated while it's calling
DoSomethingElseWithV8()? If yes, why does HasCaught() not return true? If
no, what's a problem of continuing execution?



>> So, proposals here are something like below (not yet so concrete).
>>
>> a) Make v8::TryCatch::HasCaught() return true if there already exists a
>> pending exception.  (Maybe this is no good.)
>> b) Make a new API like v8::TryCatch::HasPendingException() and make it
>> return true.  Blink rewrites all HasCaught() to the new one.
>>
>> Similarly,
>>
>> a2) Make v8::TryCatch::Exception() return a pending exception if there
>> already exists.
>> b2) Make a new API like v8::TryCatch::PendingException() and make it
>> return a thrown exception or pending exception in the isolate if any.
>> Blink rewrites all Exception() to the new one.
>>
>> What do you think of the issue and proposals?
>>
>> Cheers,
>> Yuki Shiino
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "platform-architecture-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to platform-architecture-dev+unsubscr...@chromium.org.
> To post to this group, send email to
> platform-architecture-...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/platform-architecture-dev/CABihn6ER8q9QABC3ROCSkm6V4w%2BDb0xEqRvjgzwBpMG9DmiG1Q%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/platform-architecture-dev/CABihn6ER8q9QABC3ROCSkm6V4w%2BDb0xEqRvjgzwBpMG9DmiG1Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Kentaro Hara, Tokyo, Japan

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to