Sure, please feel free to post more questions to this mailing list.
On Wed, Nov 25, 2020 at 6:25 AM 王梓童 <[email protected]> wrote:
> Thanks a lot! There is no crash after modifying the code. Can I add a
> friend with you for further discussion about V8?
>
> 在2020年11月24日星期二 UTC+8 下午11:03:54<Qingyan Li> 写道:
>
>> Got the same problem And here is what I found:
>>
>> The root cause is that the ReadOnlyHeap section in snapshot do not match
>> between the one creating codecache and the one loading codecache.
>> CodeSerializer encodes readonly objects as chunk-index/offset of the
>> ReadOnlySpace, so decoding codecache against unmatched snapshot would cause
>> error.
>>
>> And the unmatch is caused by Heap::single_character_string_cache(), the
>> content of this cache vary depending on scripts runned by SnapshotCreator.
>> When StartupSerializer visits single_character_string_cache, it calls
>> SerializeUsingReadOnlyObjectCache to serialize readonly objects. So the
>> order of
>> readonly objects varies.
>>
>> Here is a patch I think would mitigate this problem.
>>
>> diff --git a/src/snapshot/read-only-serializer.cc
>> b/src/snapshot/read-only-serializer.cc
>> index 06c5094782..1e13232150 100644
>> --- a/src/snapshot/read-only-serializer.cc
>> +++ b/src/snapshot/read-only-serializer.cc
>> @@ -66,6 +66,23 @@ void
>> ReadOnlySerializer::SerializeObjectImpl(Handle<HeapObject> obj) {
>> #endif
>> }
>>
>> +namespace {
>> +
>> +void ResetSingleCharacterStringCache(Isolate* isolate) {
>> + DisallowGarbageCollection no_gc;
>> + FixedArray cache = isolate->heap()->single_character_string_cache();
>> + HeapObject undefined = ReadOnlyRoots(isolate).undefined_value();
>> +
>> + for (int i = 0; i < cache.length(); ++i) {
>> + HeapObject obj = HeapObject::cast(cache.get(i));
>> + if (ReadOnlyHeap::Contains(obj) && obj.IsInternalizedString()) {
>> + cache.set(i, undefined);
>> + }
>> + }
>> +}
>> +
>> +}
>> +
>> void ReadOnlySerializer::SerializeReadOnlyRoots() {
>> // No active threads.
>> CHECK_NULL(isolate()->thread_manager()->FirstThreadStateInUse());
>> @@ -73,6 +90,8 @@ void ReadOnlySerializer::SerializeReadOnlyRoots() {
>> CHECK_IMPLIES(!allow_active_isolate_for_testing(),
>>
>> isolate()->handle_scope_implementer()->blocks()->empty());
>>
>> + ResetSingleCharacterStringCache(isolate());
>> +
>> ReadOnlyRoots(isolate()).Iterate(this);
>> }
>>
>>
>> On Monday, November 23, 2020 at 1:49:00 PM UTC+8 [email protected]
>> wrote:
>>
>>> I try to use both snapshot and codecache to reduce page load time. All
>>> going well when I use snapshot or codecache alone. However, when I create
>>> codecache for index.js with an engine without snapshot first, then create
>>> snapshot for startup.js, then create an engine loading index.js with both
>>> snapshot and codecache, crash occurs. Here is stacktrace:
>>>
>>> [image: Pasted Graphic.png]
>>>
>>> com.facebook.react.JavaScript (61)#0 0x000000010c7f9a16 in bool
>>> v8::internal::IsInRange<v8::internal::InstanceType,
>>> v8::internal::InstanceType>(v8::internal::InstanceType,
>>> v8::internal::InstanceType, v8::internal::InstanceType) [inlined] at
>>> /Volumes/EXTREME SSD/Documents/depot_tools/v8/v8/src/utils/utils.h:69
>>>
>>> #1 0x000000010c7f9a16 in
>>> v8::internal::InstanceTypeChecker::IsString(v8::internal::InstanceType)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/objects/instance-type-inl.h:33
>>>
>>> #2 0x000000010c7f9a16 in
>>> v8::internal::HeapObject::IsString(v8::internal::Isolate*) const [inlined]
>>> at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/objects/instance-type-inl.h:64
>>>
>>> #3 0x000000010c7f9a12 in
>>> v8::internal::HeapObject::IsThinString(v8::internal::Isolate*) const
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/objects/objects-inl.h:205
>>>
>>> #4 0x000000010c7f9a12 in v8::internal::HeapObject::IsThinString() const
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/objects/objects-inl.h:204
>>>
>>> #5 0x000000010c7f9a12 in
>>> v8::internal::Deserializer::GetBackReferencedObject(v8::internal::SnapshotSpace)
>>> at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:364
>>>
>>> #6 0x000000010c7f89b8 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)8,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:813
>>>
>>> #7 0x000000010c7f899a in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:579
>>>
>>> #8 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #9 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #10 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #11 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #12 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #13 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #14 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #15 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #16 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #17 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #18 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #19 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #20 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #21 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #22 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #23 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #24 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #25 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #26 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #27 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #28 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #29 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #30 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #31 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #32 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #33 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #34 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #35 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #36 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #37 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #38 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #39 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #40 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #41 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #42 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #43 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #44 0x000000010c7faa8d in
>>> v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:394
>>>
>>> #45 0x000000010c7f89d4 in v8::internal::FullMaybeObjectSlot
>>> v8::internal::Deserializer::ReadDataCase<v8::internal::FullMaybeObjectSlot,
>>> (v8::internal::SerializerDeserializer::Bytecode)0,
>>> (v8::internal::SnapshotSpace)6>(v8::internal::Isolate*,
>>> v8::internal::FullMaybeObjectSlot, unsigned long, unsigned char, bool)
>>> [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:810
>>>
>>> #46 0x000000010c7f89ba in bool
>>> v8::internal::Deserializer::ReadData<v8::internal::FullMaybeObjectSlot>(v8::internal::FullMaybeObjectSlot,
>>> v8::internal::FullMaybeObjectSlot, v8::internal::SnapshotSpace, unsigned
>>> long) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/deserializer.cc:576
>>>
>>> #47 0x000000010c7fc244 in
>>> v8::internal::RootVisitor::VisitRootPointer(v8::internal::Root, char
>>> const*, v8::internal::FullObjectSlot) [inlined] at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/objects/visitors.h:73
>>>
>>> #48 0x000000010c7fc22c in
>>> v8::internal::ObjectDeserializer::Deserialize(v8::internal::Isolate*) at
>>> /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/object-deserializer.cc:45
>>>
>>> #49 0x000000010c7fc070 in
>>> v8::internal::ObjectDeserializer::DeserializeSharedFunctionInfo(v8::internal::Isolate*,
>>> v8::internal::SerializedCodeData const*,
>>> v8::internal::Handle<v8::internal::String>) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/object-deserializer.cc:29
>>>
>>> #50 0x000000010c7f6e70 in
>>> v8::internal::CodeSerializer::Deserialize(v8::internal::Isolate*,
>>> v8::internal::ScriptData*, v8::internal::Handle<v8::internal::String>,
>>> v8::ScriptOriginOptions) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/snapshot/code-serializer.cc:289
>>>
>>> #51 0x000000010c42971a in
>>> v8::internal::Compiler::GetSharedFunctionInfoForScript(v8::internal::Isolate*,
>>> v8::internal::Handle<v8::internal::String>,
>>> v8::internal::Compiler::ScriptDetails const&, v8::ScriptOriginOptions,
>>> v8::Extension*, v8::internal::ScriptData*,
>>> v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason,
>>> v8::internal::NativesFlag) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/codegen/compiler.cc:2024
>>>
>>> #52 0x000000010c398b1a in
>>> v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*,
>>> v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions,
>>> v8::ScriptCompiler::NoCacheReason) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/api/api.cc:2435
>>>
>>> #53 0x000000010c39909f in
>>> v8::ScriptCompiler::Compile(v8::Local<v8::Context>,
>>> v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions,
>>> v8::ScriptCompiler::NoCacheReason) at /Volumes/EXTREME
>>> SSD/Documents/depot_tools/v8/v8/src/api/api.cc:2466
>>>
>>> #54 0x000000010c36ed77 in
>>> facebook::V8Runtime::ExecuteScript(v8::Isolate*, v8::Local<v8::String>
>>> const&, std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> > const&) at
>>> /Users/wangzitong/Documents/v8executor/src/v8runtime/V8Runtime.mm:317
>>>
>>> #55 0x000000010c371131 in
>>> facebook::V8Runtime::evaluateJavaScript(std::__1::shared_ptr<facebook::jsi::Buffer
>>> const> const&, std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> > const&) at
>>> /Users/wangzitong/Documents/v8executor/src/v8runtime/V8Runtime.mm:746
>>>
>>> #56 0x000000010a762f72 in
>>> facebook::react::JSIExecutor::loadApplicationScript(std::__1::unique_ptr<facebook::react::JSBigString
>>> const, std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >) at
>>> /Users/wangzitong/Documents/imeituan/Pods/React-jsiexecutor/src/jsireact/JSIExecutor.cpp:126
>>>
>>> #57 0x000000010a73a3f9 in
>>> facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0::operator()(facebook::react::JSExecutor*)
>>> at
>>> /Users/wangzitong/Documents/imeituan/Pods/React-cxxreact/src/NativeToJsBridge.cpp:119
>>>
>>> #58 0x000000010a73a2a2 in
>>> decltype(std::__1::forward<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char>
>>> >)::$_0&>(fp)(std::__1::forward<facebook::react::JSExecutor*>(fp0)))
>>> std::__1::__invoke<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0&,
>>> facebook::react::JSExecutor*>(facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0&, facebook::react::JSExecutor*&&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:3545
>>>
>>> #59 0x000000010a73a242 in void
>>> std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0&,
>>> facebook::react::JSExecutor*>(facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0&, facebook::react::JSExecutor*&&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348
>>>
>>> #60 0x000000010a73a1f2 in
>>> std::__1::__function::__alloc_func<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0,
>>> std::__1::allocator<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0>, void
>>> (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*&&)
>>> at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1546
>>>
>>> #61 0x000000010a738cb3 in
>>> std::__1::__function::__func<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0,
>>> std::__1::allocator<facebook::react::NativeToJsBridge::loadApplication(std::__1::unique_ptr<facebook::react::RAMBundleRegistry,
>>> std::__1::default_delete<facebook::react::RAMBundleRegistry> >,
>>> std::__1::unique_ptr<facebook::react::JSBigString const,
>>> std::__1::default_delete<facebook::react::JSBigString const> >,
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >)::$_0>, void
>>> (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*&&)
>>> at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1720
>>>
>>> #62 0x000000010a74601d in std::__1::__function::__value_func<void
>>> (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*&&)
>>> const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1873
>>>
>>> #63 0x000000010a745fa0 in std::__1::function<void
>>> (facebook::react::JSExecutor*)>::operator()(facebook::react::JSExecutor*)
>>> const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2548
>>>
>>> #64 0x000000010a745f68 in
>>> facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7::operator()() const at
>>> /Users/wangzitong/Documents/imeituan/Pods/React-cxxreact/src/NativeToJsBridge.cpp:269
>>>
>>> #65 0x000000010a745edd in
>>> decltype(std::__1::forward<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7&>(fp)())
>>> std::__1::__invoke<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7&>(facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:3545
>>>
>>> #66 0x000000010a745e8d in void
>>> std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7&>(facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348
>>>
>>> #67 0x000000010a745e5d in
>>> std::__1::__function::__alloc_func<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7,
>>> std::__1::allocator<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7>, void ()>::operator()() at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1546
>>>
>>> #68 0x000000010a7449be in
>>> std::__1::__function::__func<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7,
>>> std::__1::allocator<facebook::react::NativeToJsBridge::runOnExecutorQueue(std::__1::function<void
>>> (facebook::react::JSExecutor*)>)::$_7>, void ()>::operator()() at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1720
>>>
>>> #69 0x000000010a5c6755 in std::__1::__function::__value_func<void
>>> ()>::operator()() const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1873
>>>
>>> #70 0x000000010a5c5e15 in std::__1::function<void ()>::operator()()
>>> const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2548
>>>
>>> #71 0x000000010a5c5b88 in
>>> facebook::react::tryAndReturnError(std::__1::function<void ()> const&) at
>>> /Users/wangzitong/Documents/imeituan/Pods/React/React/CxxModule/RCTCxxUtils.mm:72
>>>
>>> #72 0x000000010a61ccd1 in
>>> facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()>
>>> const&) at
>>> /Users/wangzitong/Documents/imeituan/Pods/React/React/CxxBridge/RCTMessageThread.mm:59
>>>
>>> #73 0x000000010a621d43 in
>>> facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1::operator()() const at
>>> /Users/wangzitong/Documents/imeituan/Pods/React/React/CxxBridge/RCTMessageThread.mm:72
>>>
>>> #74 0x000000010a621ccd in
>>> decltype(std::__1::forward<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1&>(fp)())
>>> std::__1::__invoke<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1&>(facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:3545
>>>
>>> #75 0x000000010a621c7d in void
>>> std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1&>(facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1&) at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348
>>>
>>> #76 0x000000010a621c4d in
>>> std::__1::__function::__alloc_func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1,
>>> std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1>, void ()>::operator()() at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1546
>>>
>>> #77 0x000000010a6207ae in
>>> std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1,
>>> std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
>>> ()>&&)::$_1>, void ()>::operator()() at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1720
>>>
>>> #78 0x000000010a5c6755 in std::__1::__function::__value_func<void
>>> ()>::operator()() const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1873
>>>
>>> #79 0x000000010a5c5e15 in std::__1::function<void ()>::operator()()
>>> const at
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2548
>>>
>>> #80 0x000000010a61c92c in invocation function for block in
>>> facebook::react::RCTMessageThread::runAsync(std::__1::function<void ()>) at
>>> /Users/wangzitong/Documents/imeituan/Pods/React/React/CxxBridge/RCTMessageThread.mm:39
>>>
>>> #81 0x00007fff203a85db in __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ ()
>>>
>>> #82 0x00007fff203a79ef in __CFRunLoopDoBlocks ()
>>>
>>> #83 0x00007fff203a2a6d in __CFRunLoopRun ()
>>>
>>> #84 0x00007fff203a1b9e in CFRunLoopRunSpecific ()
>>>
>>> #85 0x000000010a596071 in +[RCTCxxBridge runRunLoop] at
>>> /Users/wangzitong/Documents/imeituan/Pods/React/React/CxxBridge/RCTCxxBridge.mm:272
>>>
>>> #86 0x00007fff2086f521 in __NSThread__start__ ()
>>>
>>> #87 0x00007fff5dcdc109 in _pthread_start ()
>>>
>>> #88 0x00007fff5dcd7b8b in thread_start ()
>>>
>>>
>>> And I have digged out some facts:
>>>
>>> 1. If codecache is created with an engine that is already attached with
>>> a snapshot, not an empty engine, no crash.
>>>
>>> 2. If I annotate some code below in startup.js, no crash.
>>>
>>> function shouldUseNative() {
>>> var test3 = {};
>>> 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
>>> test3[letter] = letter;
>>> });
>>> if (Object.keys(test3).join('') !== 'abcdefghijklmnopqrst') {
>>> return false;
>>> }
>>> return true;
>>> }
>>> shouldUseNative();
>>>
>>>
>>> V8 version:*7.8.279.23*
>>>
>>> Can someone know what causes the crash? Thanks.
>>>
>> --
> --
> 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].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/v8-dev/8c2f6a42-f341-4a9c-8a49-593890c258f0n%40googlegroups.com
> <https://groups.google.com/d/msgid/v8-dev/8c2f6a42-f341-4a9c-8a49-593890c258f0n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/v8-dev/CAGRskv8nHgDrVZ3nDFfwgJKVxTC-5Kwhv0W395Hq29VfBh7Xrw%40mail.gmail.com.