I have compiled V8 on Ubuntu and have a very simple V8 program called isolate_test.cc. It is based on the Hello World example from Google:
#include <v8.h>
using namespace v8;
int main(int argc, char* argv[]) {
V8::initialize();
Isolate* isolate = Isolate::GetCurrent(); //Always returns NULL
return 0;
}
The command I use to compile this program is:
g++ -Iinclude -g isolate_test.cc -o isolate_test -Wl,--start-group out/x64.debug/obj.target/{tools/gyp/libv8_{base,snapshot},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -lpthread
Problem is Isolate::GetCurrent()
always returns NULL
. Why does this happen and what is the correct way of getting the current Isolate
?
I could be way off track but my first thought is that this relates to Isolate::GetCurrent()
being unable to get the current thread from libpthread
.
Update: As per this question I have added V8::initialize()
as the first call in the program, however this does not solve the problem.
I have the same issue. I don't really know the underlying reason, but NULL here means default isolate was not created and entered. The obvious workaround is to do it manually
Isolate* isolate = Isolate::GetCurrent(); // returns NULL
if (!isolate) {
isolate = Isolate::New();
isolate->Enter();
}