Skip to content

runsc/boot: validate version before loading async pages during restore - #14279

Open
DARSHANR007 wants to merge 1 commit into
google:masterfrom
DARSHANR007:fix-restore-version-check
Open

DARSHANR007 wants to merge 1 commit into
google:masterfrom
DARSHANR007:fix-restore-version-check

Conversation

@DARSHANR007

Copy link
Copy Markdown
Contributor

Problem

In runsc/boot/controller.go, Restore() spawned kernel.NewAsyncMFLoader before checking the checkpoint version. When restoring a checkpoint from a different runsc build, the background loader started parsing incompatible page headers immediately, causing a panic (makeslice: len out of range) instead of returning a clean error.

My fix

Move statefile reading and the version check before creating mainMF and starting NewAsyncMFLoader. Incompatible checkpoints now fail fast with a clear version error.

Fixes #14278

Comment thread runsc/boot/controller.go Resolved
@DARSHANR007
DARSHANR007 force-pushed the fix-restore-version-check branch from 1968604 to 5f24412 Compare September 20, 2026 04:39
@shailend-g
shailend-g removed their request for review September 30, 2026 21:42
@milantracy

Copy link
Copy Markdown
Collaborator

is the PR still alive?

@DARSHANR007
DARSHANR007 force-pushed the fix-restore-version-check branch from 5f24412 to ddf6027 Compare October 17, 2026 05:25
@DARSHANR007

Copy link
Copy Markdown
Contributor Author

is the PR still alive?

Yes , the PR is active.

I have rebased onto the latest master to resolve merge conflicts. The requested nil check on restoreDone was addressed in onRestoreFailed.

@nybidari @milantracy could you please take another look and approve CI?

@EtiennePerot EtiennePerot added this to the Lightspeed milestone Oct 22, 2026
@EtiennePerot EtiennePerot removed this from the Lightspeed milestone Oct 24, 2026
copybara-service Bot pushed a commit that referenced this pull request Oct 24, 2026
### Problem
In `runsc/boot/controller.go`, `Restore()` spawned `kernel.NewAsyncMFLoader` before checking the checkpoint version. When restoring a checkpoint from a different `runsc` build, the background loader started parsing incompatible page headers immediately, causing a panic (`makeslice: len out of range`) instead of returning a clean error.

### My fix
Move statefile reading and the version check before creating `mainMF` and starting `NewAsyncMFLoader`. Incompatible checkpoints now fail fast with a clear version error.

Fixes #14278

FUTURE_COPYBARA_INTEGRATE_REVIEW=#14279 from DARSHANR007:fix-restore-version-check ddf6027
PiperOrigin-RevId: 1005912581
copybara-service Bot pushed a commit that referenced this pull request Oct 24, 2026
### Problem
In `runsc/boot/controller.go`, `Restore()` spawned `kernel.NewAsyncMFLoader` before checking the checkpoint version. When restoring a checkpoint from a different `runsc` build, the background loader started parsing incompatible page headers immediately, causing a panic (`makeslice: len out of range`) instead of returning a clean error.

### My fix
Move statefile reading and the version check before creating `mainMF` and starting `NewAsyncMFLoader`. Incompatible checkpoints now fail fast with a clear version error.

Fixes #14278

FUTURE_COPYBARA_INTEGRATE_REVIEW=#14279 from DARSHANR007:fix-restore-version-check ddf6027
PiperOrigin-RevId: 1005912581
copybara-service Bot pushed a commit that referenced this pull request Oct 24, 2026
### Problem
In `runsc/boot/controller.go`, `Restore()` spawned `kernel.NewAsyncMFLoader` before checking the checkpoint version. When restoring a checkpoint from a different `runsc` build, the background loader started parsing incompatible page headers immediately, causing a panic (`makeslice: len out of range`) instead of returning a clean error.

### My fix
Move statefile reading and the version check before creating `mainMF` and starting `NewAsyncMFLoader`. Incompatible checkpoints now fail fast with a clear version error.

Fixes #14278

FUTURE_COPYBARA_INTEGRATE_REVIEW=#14279 from DARSHANR007:fix-restore-version-check ddf6027
PiperOrigin-RevId: 1005912581
@EtiennePerot

Copy link
Copy Markdown
Collaborator

[🤖] Needs rebase.

@DARSHANR007

Copy link
Copy Markdown
Contributor Author

@milantracy Please can you review the PR here.

Thanks

@milantracy

Copy link
Copy Markdown
Collaborator

there are some failures at https://buildkite.com/gvisor/pipeline/builds/52153 for the PR.
please fix

Move statefile reading and version check before spawning AsyncMFLoader
so incompatible checkpoints fail fast with a version error instead of panicking.

Fixes google#14278
@DARSHANR007
DARSHANR007 force-pushed the fix-restore-version-check branch from 7d41129 to e42a6d2 Compare October 30, 2026 08:24
@DARSHANR007

Copy link
Copy Markdown
Contributor Author

there are some failures at https://buildkite.com/gvisor/pipeline/builds/52153 for the PR. please fix

@milantracy I accidently created a merge commit while syncing with upstream , which caused the buildkite failures .

Ive rebased it . Please have a look

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

restore: pages file is parsed before the runsc_version check

4 participants