mirror of
https://github.com/kvcache-ai/AgentENV.git
synced 2026-11-05 01:17:36 +00:00
[GH-ISSUE #41] Recoverable pause failures can leave sandboxes frozen while reported as Running #20
Labels
No labels
bug
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/AgentENV#20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @morluto on GitHub (Jul 28, 2026).
Original GitHub issue: https://github.com/kvcache-ai/AgentENV/issues/41
Problem
A recoverable backend pause failure can occur after Firecracker has already been paused. The orchestrator currently restores the sandbox handle, proxy route, and
Runningstate without first callingresume().The sandbox can therefore be discoverable and routable as
Runningwhile its VM remains frozen.Current behavior
On a non-terminal
SandboxPauseError,pause_sandbox_innerreinserts the detached handle, restores the route, and transitionsPausing -> Running.The backend contract only says that a recoverable failure leaves the runtime safe to resume; it does not guarantee that the VM is already running.
Expected behavior
resume()before restoring the handle, route, andRunningstate.Impact
Pause and resume are central to AgentENV's low-cost idle environment model. Returning a frozen VM to the running pool can leave agent workloads apparently healthy but unable to make progress, while routing and resource metrics continue to treat the sandbox as active.
@yingdi-shan commented on GitHub (Jul 29, 2026):
Could you please share the steps to reproduce this issue?
@morluto commented on GitHub (Jul 29, 2026):
Yes. This can be reproduced directly through the orchestrator's fault-injection test; KVM is not required.
The test injects a recoverable backend pause failure and checks that the orchestrator calls
resume()before restoring the sandbox asRunning.I also ran this regression test against the parent implementation while retaining the test. It failed with
resume()called 0 times instead of 1. With the PR implementation, it passes.The equivalent production condition is a failure during snapshot processing after Firecracker has already been paused.