OXYGENHUB

An idle runner is offered sandboxes its host cannot start, fetches their images, then declines them issue #92 closed: completed andymccall opened this · 0 comments

andymccall

An idle runner claims with no memory limit, so it is offered sandboxes bigger than its host can start. It fetches each one's image, then declines it.

Seen 2026-10-26 on mars-1 (host 7.3 GB, budget 4096 MiB):

  • It claimed the 8 GiB Rust jobs and the Android job, and fetched the 14.5 GB Rust image (2.3 GiB to move, 9 minutes).
  • It then declined them one after another: "only 6541 MiB of memory is free here; the sandbox needs 8192 MiB".
  • The hub kept offering more of the same.

Cause: Budget::room returns (None, None) for an idle runner ("a lone job may use the whole budget even if it asks for more"), and the claim sends that as no limit. The decline check uses MemAvailable, so the claim and the check disagree.

Fix: the claim's free_memory_mib is the budget's room capped at the host's MemAvailable (claim_memory). A lone job may still use the whole budget and more, but never more than the host has free.

andymccall set labels bug ·

closed by change 77c8c24066ef ·