Hi, V8 really, really needs its 'natives', so crashing if it doesn't have them is the expected result. The 'natives' are the built-in JS libraries and V8 cannot execute without them. Note that the 'Get started' guide explicitly tells you to copy the natives file. (Step 4 in 'Run the Example').
What used to be different is that by default the 'natives' were linked into the library, so there was no separate file to take care. You can return to this state by compiling with v8_use_external_startup_data=0. If you build with the default settings - 'natives' in an external file - then the embedder is expected to hand the natives to V8, via v8::V8::SetNativesDataBlob. The 'hello world' example does this in the simplest possible way, by telling V8 to load them from the path of the executable (line "V8::InitializeExternalStartupData(argv[0]);"). Presumably a more sophisticated embedder would use a more sophisticated mechanism. Daniel On Tue, Jan 5, 2016 at 9:19 AM, <[email protected]> wrote: > I saw a thread from earlier this year, but I wanted to say it's still > happening: > > https://groups.google.com/forum/#!topic/v8-dev/LxKgBbEHLCE > > If I run the sample code from here > > https://developers.google.com/v8/get_started > > and don't copy natives_blob.bin to the current directory, I get the > following crash when creating an isolate: > > * thread #1: tid = 0xb1c49, 0x0000000100724b6e > h2`v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetScriptSource(int) > [inlined] v8::internal::List<v8::internal::Vector<char const>, > v8::internal::FreeStoreAllocationPolicy>::operator[](i=3) const + 3 at > list.h:69, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS > (code=1, address=0x20) > > * frame #0: 0x0000000100724b6e > h2`v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetScriptSource(int) > [inlined] v8::internal::List<v8::internal::Vector<char const>, > v8::internal::FreeStoreAllocationPolicy>::operator[](i=3) const + 3 at > list.h:69 > > frame #1: 0x0000000100724b6b > h2`v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetScriptSource(int) > [inlined] > v8::internal::NativesStore::GetScriptSource(this=0x0000000000000000, > index=3) at natives-external.cc:41 > > frame #2: 0x0000000100724b6b > h2`v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetScriptSource(index=3) > + 11 at natives-external.cc:213 > > frame #3: 0x00000001004d3bc2 > h2`v8::internal::Deserializer::ReadData(this=0x00007fff5fbff7a8, > current=<unavailable>, limit=0x000034e592019710, source_space=1, > current_object_address="\x89R") + 4802 at serialize.cc:1157 > > frame #4: 0x00000001004d4b97 > h2`v8::internal::Deserializer::ReadObject(this=0x00007fff5fbff7a8, > space_number=1, write_back=0x000034e592019610) + 423 at serialize.cc:825 > > frame #5: 0x00000001004d2bf0 > h2`v8::internal::Deserializer::ReadData(this=0x00007fff5fbff7a8, > current=<unavailable>, limit=0x000034e5920196e8, source_space=1, > current_object_address="\tB") + 752 at serialize.cc:1028 > > frame #6: 0x00000001004d4b97 > h2`v8::internal::Deserializer::ReadObject(this=0x00007fff5fbff7a8, > space_number=1, write_back=0x0000000102801420) + 423 at serialize.cc:825 > > frame #7: 0x00000001004d2bf0 > h2`v8::internal::Deserializer::ReadData(this=0x00007fff5fbff7a8, > current=<unavailable>, limit=0x0000000102801ae8, source_space=0, > current_object_address=0x0000000000000000) + 752 at serialize.cc:1028 > > frame #8: 0x00000001002c2219 > h2`v8::internal::Heap::IterateStrongRoots(this=0x0000000102801020, > v=0x00007fff5fbff7a8, mode=VISIT_ONLY_STRONG) + 41 at heap.cc:4569 > > frame #9: 0x00000001004d204d > h2`v8::internal::Deserializer::Deserialize(this=0x00007fff5fbff7a8, > isolate=<unavailable>) + 253 at serialize.cc:532 > > frame #10: 0x000000010034cf66 > h2`v8::internal::Isolate::Init(this=0x0000000102801000, > des=0x00007fff5fbff7a8) + 4390 at isolate.cc:2201 > > frame #11: 0x00000001004dd0e5 > h2`v8::internal::Snapshot::Initialize(isolate=0x0000000102801000) + 549 at > snapshot-common.cc:58 > > frame #12: 0x0000000100029a24 > h2`v8::Isolate::New(params=<unavailable>) + 308 at api.cc:7139 > > frame #13: 0x000000010000172d h2`main + 157 > > frame #14: 0x00007fff95ffd5ad libdyld.dylib`start + 1 > > frame #15: 0x00007fff95ffd5ad libdyld.dylib`start + 1 > > > Copy in the one file and everything works fine. > > > This is on a completely bog standard build of 4.9.0.0 on os x 10.11.1. > > -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" 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. > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" 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.
