I am cross compiling V8 for android and I have created a shared library 
containing a simple function which adds some property to a provided object:

extern "C" void MyFunc(Isolate* isolate, Local<Object>& obj) {
    Local<Context> context = isolate->GetCurrentContext();
    obj->Set(context, v8::String::NewFromUtf8(isolate, 
"someProp").ToLocalChecked(), Number::New(isolate, 500));
}


My goal  purpose is to call this function from my android application in which 
I have embedded V8:


typedef void (*MyCallback)(Isolate* isolate, Local<Object>& obj);


void* handle = 
dlopen("/data/data/com.tns.testapplication/files/app/modules/libCalc-x86_64.so",
 RTLD_LAZY);

MyCallback func = reinterpret_cast<MyCallback>(dlsym(handle, "MyFunc"));
Local<Object> exportsObj = Object::New(isolate);
func(isolate, exportsObj);


This successfully invokes "MyFunc" from the shared library and sets the 
"someProp" property on the passed object. 


Starting from V8 *7.7.299.11* calling obj->Set() inside the library crashes 
with SIGSEGV and without any stacktrace.


I have noticed that if I set the property before calling the function then it 
works:


exportsObj->Set(context, v8::String::NewFromUtf8(isolate, 
"someProp").ToLocalChecked(), v8::Null(isolate));
func(isolate, exportsObj);


Any idea what might have changed between the official V8 7.6 and 7.7 releases 
that might explain this behaviour or any tips that would allow me to debug this 
further?

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/48a71b41-b96e-41ec-9450-fa36d6f1bb45%40googlegroups.com.

Reply via email to