V8反序列化V8快照blob失败.处理步骤



我试图使用通过vcpkg install v8编译的V8库,但收到以下错误:

Failed to deserialize the V8 snapshot blob. This can mean that the snapshot blob file is corrupted or missing.

我在发货的hello-world.cc上测试它:

v8::V8::InitializeICUDefaultLocation(argv[0]);
v8::V8::InitializeExternalStartupData(argv[0]);
std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
v8::V8::InitializePlatform(platform.get());
v8::V8::Initialize();
Isolate::CreateParams create_params;
create_params.array_buffer_allocator =
v8::ArrayBuffer::Allocator::NewDefaultAllocator();
Isolate* isolate = Isolate::New(create_params);  // << here is the crash
Isolate::Scope isolate_scope(isolate);

这个错误是在Isolate* isolate = Isolate::New(create_params);中产生的,因为内部变量i_isole没有分配任何snapshot_blog:

if (!i::Snapshot::Initialize(i_isolate)) {
// If snapshot data was provided and we failed to deserialize it must
// have been corrupted.
if (i_isolate->snapshot_blob() != nullptr) {
FATAL(
"Failed to deserialize the V8 snapshot blob. This can mean that the "
"snapshot blob file is corrupted or missing.");
}

不幸的是,我找不到任何关于这个错误的参考。谢谢你的建议。

更新:我正在Visual Studio 2019上尝试它,32位构建和64位构建也是如此。

更新:基于vcpkg。Json文件,版本号为"9.0.257.17"。我将尝试更新到最新版本,如果这不是一些已经修复的错误。

要使v8::V8::InitializeExternalStartupData(argv[0]);工作,请确保文件snapshot_blob.bin与已编译的可执行文件位于同一目录中。或者,确保您传递的是正确的路径,而不是argv[0]

我对vcpkg install v8一无所知;如果可以是您以这种方式获得的库没有V8_USE_EXTERNAL_STARTUP_DATA编译,在这种情况下,您应该关闭外部启动数据为您的构建以及。如果您根本没有snapshot_blob.bin文件,那么这将是一个指示符。

相关内容

  • 没有找到相关文章

最新更新