Andreas
Andreas

Reputation: 309

v8 Engine - Creating an array causes an error

I have a problem creating an array using the v8 engine. This is what I got so far:

void function(Isolate* isolate) {    
    EscapableHandleScope scope(isolate);
    Local<Array> array = Array::New(isolate, n);
    ...
}

But my program crashes every time when it reaches the second line. This is the output I receive:

==== C stack trace ===============================
    v8::internal::Scope::set_start_position [0x000002A7A393E69E+10258841]
    v8::internal::Scope::set_start_position [0x000002A7A37A1C63+8568670]
    v8::internal::Scope::set_start_position [0x000002A7A37A1E02+8569085]
    v8::internal::Scope::set_start_position [0x000002A7A3004CBC+585655]

I have already tried to create an integer or another object in this function. There it works perfectly. Any idea what went wrong here?

I find out what went wrong. But I am not 100% sure why. After i put the Array initialization in a Context_Scope, it worked. But why had it worked for an Integer initialization (without the context scope)?

Upvotes: 0

Views: 157

Answers (1)

jmrk
jmrk

Reputation: 40561

There is not enough information here to be able to tell what happened. Based on the snippet you've pasted, all I can say is that n is not defined so it shouldn't even compile, but clearly that's not the issue you're talking about.

Please compile your code in debug mode, and then run it in a debugger, so that you can get a proper stack trace. Maybe instead of just crashing, it will run into an assertion ("DCHECK") that might shed some light on what's wrong. (Generally speaking, learning how to use a debugger is pretty much a requirement for working with C++.)

It might also be helpful to compare what you have with the official sample code, e.g. https://chromium.googlesource.com/v8/v8/+/master/samples/hello-world.cc.

If you then still need help: please post your entire code, including how you built it and which V8 version you're using.


Edit after your edit of the question:

  • Things like a missing ContextScope were why I asked to see your entire code ;-)

  • Small integers are context independent. (That's an implementation detail that you usually don't care about, because for all interesting things you need a context anyway.)

Upvotes: 1

Related Questions