Hi! I exported symbols from Electron and my built V8, and indeed the symbols are the same e.g.:
in Electron: 00000000017a31f0 T __ZN2v86Object16SetInternalFieldEiNS_5LocalINS_5ValueEEE in V8 00000000000267f0 T __ZN2v86Object16SetInternalFieldEiNS_5LocalINS_5ValueEEE Is there a way to prefix my V8 somehow in the buildconfig to avoid these namespace clashes? 2019. november 27., szerda 17:01:20 UTC+1 időpontban Zoltan B a következőt írta: > > Thanks for your reply! No, I'm not using -flat_namespace anywhere (and the > default is afaik -twolevel_namespace). I Tried linking to V8 statically, > and with 7.8 non-monolith static libs it worked, but I tried again with 7.2 > monolithic and it calls into libNode.dylib and crashes. I'll try 7.2 with > non-monolithic build but even if it works it seems very unstable. > > Is electron built perhaps with flat_namespace? I'm using an old version > (1.8, its 2.5 years old). > > I'm running out of ideas on how to work around this... > > 2019. november 22., péntek 3:18:13 UTC+1 időpontban Ben Noordhuis a > következőt írta: >> >> On Thu, Nov 21, 2019 at 6:10 PM Zoltan B <zben...@gmail.com> wrote: >> > >> > Hi! >> > >> > I'm running an electron app, that loads native application (using ffi) >> that renders content into a canvas in electron. This native C++ code has an >> embedded V8 inside it. >> > I'm compiling V8 into dynamic libraries (.dylib files) >> (use_component_build is set to true). >> > >> > My issue is that the V8 inside Electron seems to clash with my V8 >> instance (they are not the same version), but only on macOS. >> > If you look at the call-stack below of the segmentation fault, you can >> see that it begins in libv8.dylib, but ends up somehow in libnode.dylib >> which I can't really explain. >> > >> > Thread 16 Crashed: >> > 0 libnode.dylib 0x0000000108306911 0x107c70000 + 6908177 >> > 1 libnode.dylib 0x000000010830609c void >> v8::internal::LookupIterator::Start<false>() + 60 >> > 2 libv8.dylib 0x0000000118bbc354 >> v8::internal::JSObject::SetOwnPropertyIgnoreAttributes(v8::internal::Handle<v8::internal::JSObject>, >> >> v8::internal::Handle<v8::internal::Name>, >> v8::internal::Handle<v8::internal::Object>, >> v8::internal::PropertyAttributes) + 164 (js-objects.cc:3148) >> > 3 libv8.dylib 0x0000000118a9bc06 >> v8::internal::Genesis::GetThrowTypeErrorIntrinsic() + 118 (handles.h:144) >> > 4 libv8.dylib 0x0000000118a9c13d >> v8::internal::Genesis::AddRestrictedFunctionProperties(v8::internal::Handle<v8::internal::JSFunction>) >> >> + 29 (bootstrapper.cc:1109) >> > 5 libv8.dylib 0x0000000118ab1de5 >> v8::internal::Genesis::Genesis(v8::internal::Isolate*, >> v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, >> v8::Local<v8::ObjectTemplate>, unsigned long, >> v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) + 1269 >> (bootstrapper.cc:5446) >> > 6 libv8.dylib 0x0000000118a9b209 >> v8::internal::Bootstrapper::CreateEnvironment(v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, >> >> v8::Local<v8::ObjectTemplate>, v8::ExtensionConfiguration*, unsigned long, >> v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) + 89 >> (bootstrapper.cc:5374) >> > 7 libv8.dylib 0x00000001188862aa v8::NewContext(v8::Isolate*, >> v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, >> v8::MaybeLocal<v8::Value>, unsigned long, >> v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) + 1722 >> (api.cc:5697) >> > 8 libv8.dylib 0x00000001188866fa v8::Context::New(v8::Isolate*, >> v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, >> v8::MaybeLocal<v8::Value>, v8::DeserializeInternalFieldsCallback, >> v8::MicrotaskQueue*) + 42 (api.cc:5856) >> > >> > >> > >> > Is it possible that when libv8.dylib loads the subsequent .dylib files >> with dlopen() (such as libv8_platform.dylib etc.) that dlopen somehow >> fetches the V8 symbols inside the libnode.dylib? >> > >> > Electron version I'm using: 1.8.8 >> > V8 versions I'm using in my app: 7.2 (I tried it with 7.8 too but with >> the same results) >> > >> > Could anyone help me out how to avoid this? >> >> Since you're only seeing this on macOS: is anything linked with >> -flat_namespace? >> > -- -- 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/49193266-77a3-4fb7-b0dd-b0953174c1e9%40googlegroups.com.