Commit 5c7e24d7 authored by Dan Elphick's avatar Dan Elphick Committed by Commit Bot

[snapshot] Fix mksnapshot with warmup script

This fixes an assertion failure in mksnapshot that when the read-only
space is created for a second time, that its checksum should match the
first time it was deserialized. However with warmup scripts in
mksnapshot, the first run through doesn't deserialize it, but creates it
from scratch.  Then the next time through it deserializes it which it
doesn't expect and so crashes as there is no checksum to compare it to.

This fixes it by only checking if is a last_checksum (e.g. that it was
deserialized). Additionally CHECK that we never attempt to create the
objects from scratch if previously deserialized from a snapshot.

Bug: v8:10320
Change-Id: I598e5298b68f45911e20533db91d7f24fea21045
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2102579Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66718}
parent 0798746c
...@@ -52,9 +52,12 @@ void ReadOnlyHeap::SetUp(Isolate* isolate, ReadOnlyDeserializer* des) { ...@@ -52,9 +52,12 @@ void ReadOnlyHeap::SetUp(Isolate* isolate, ReadOnlyDeserializer* des) {
#ifdef DEBUG #ifdef DEBUG
const base::Optional<uint32_t> last_checksum = const base::Optional<uint32_t> last_checksum =
shared_ro_heap_->read_only_blob_checksum_; shared_ro_heap_->read_only_blob_checksum_;
if (last_checksum || des_checksum) { if (last_checksum) {
// The read-only heap was set up from a snapshot. Make sure it's the always // The read-only heap was set up from a snapshot. Make sure it's the always
// the same snapshot. // the same snapshot.
CHECK_WITH_MSG(des_checksum,
"Attempt to create the read-only heap after "
"already creating from a snapshot.");
CHECK_EQ(last_checksum, des_checksum); CHECK_EQ(last_checksum, des_checksum);
} else { } else {
// The read-only heap objects were created. Make sure this happens only // The read-only heap objects were created. Make sure this happens only
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment