On Thu, Jun 16, 2016 at 5:25 AM,  <[email protected]> wrote:
> Hi, I tried to call  v8::Isolate::GetCurrent from a library, both in shared
> and static ways. For static, it returns the correct isolate; For shared, it
> got NULL.
> Running OS is Android 6.0.
>
> Here is my sample code:
> void main()
> {
>       ...
>      v8::Isolate* isolate = v8::Isolate::GetCurrent();  //isolate is not
> NULL
>      mylib::getIsolate();  //isolate is not NULL
>      g_mylibdlsym_getisolate_fn(); //isolate is NULL
>      mylib::getIsolate();  //isolate is not NULL
>      ...
> }
>
>>>>details about g_mylibdlsym_getisolate_fn :
> g_mylibdlsym_getisolate_fn is loaded by dlsym(library,
> g_mylibdlsym_getisolate);
>
> The implementation of g_mylibdlsym_getisolate:
> extern "C" {
>         __attribute__((visibility("default")))  void
> g_mylibdlsym_getisolate() {
>                 v8::Isolate* isolate = v8::Isolate::GetCurrent();
>                 printf("isolate=%p",isolate) //isolate is NULL;
>
>         }
> }
>
>>>>details about  mylib::getIsolate()
>  namespace mylib {
>         void getIsolate() {
>                 v8::Isolate* isolate = v8::Isolate::GetCurrent();
>                 printf("isolate=%p",isolate) //isolate is not NULL;
>         }
> }
>
> Also, I add some logs at Isolate::Current. If called by
> g_mylibdlsym_getisolate, the isolate=0x0, isolate_key_=0x0.
>   // Returns the isolate inside which the current thread is running.
>   INLINE(static Isolate* Current()) {
>     DCHECK(base::NoBarrier_Load(&isolate_key_created_) == 1);
>     Isolate* isolate = reinterpret_cast<Isolate*>(
>         base::Thread::GetExistingThreadLocal(isolate_key_));
> v8::base::OS::Print("xxxa: %s, %d , isolate=%p, isolate_key_=%x",
>   __FUNCTION__,__LINE__,isolate,isolate_key_);
>     DCHECK(isolate != NULL);
>     return isolate;
>   }
>
> Any hints for this?

It sounds like you're linking in two copies of V8.

-- 
-- 
v8-users mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to