On May 11, 2018 at 4:36:12 PM, Ben Noordhuis (i...@bnoordhuis.nl) wrote:

On Fri, May 11, 2018 at 10:05 PM, <jer...@fly.io> wrote:
> Yea, that makes sense. They do match up, but the function I use to get the

> context handle may be called more than once at the same time. I mean, the
> same context may be entered multiple times concurrently and exited at
> different times. As soon as it's exited once by one of the concurrent
tasks,
> it will throw that error I pasted if it's exited again.
>
> void __crystal_ctx_scoped(char *id);
>
> void v8_with_ctx_scope(Isolate* iso, Context* ctxptr, char* id) {
> v8::HandleScope handle_scope(iso);
> v8::Local<v8::Context> ctx = ctxptr->Get(iso);
> {
> v8::Context::Scope context_scope(ctx);
> __crystal_ctx_scoped(id);
> }
> }
>
> The __crystal_ctx_scoped is a callback exposed from Crystal to C. It
> dispatches to the right context via the provided id.

You mean __crystal_ctx_scoped() directly or indirectly calls
v8_with_ctx_scope() again? Yes, that's going to be problematic.

Another fiber might call v8_with_ctx_scope() again before the first call to
it is done. With the same context. When I added a mutex, the problem seemed
fixed. I just want to make sure this is limitation: you can't enter the
same context more than one at the same time, or else exiting will exit from
both "enters".



At what point or points do you call into V8? You could maintain a
stack of contexts and call Enter() and Exit() manually but that only
works when there are no V8 stack frames (either JS or C++) on the call
stack.

Hmm. It's called into when there's an HTTP request coming in or when
there's a callback fired (like a setTimeout.)

Not entirely sure what kind of information you're looking for :) There's
probably going to be frames on the call stack.




-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to a topic in the
Google Groups "v8-users" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/v8-users/5EbYZlO5VTY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

-- 
-- 
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