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.