Summary
One boot in 30 on the aarch64 cortex-a72 service-sequence profile stalls
inside clonevm_exec_test: it prints CLONEVM_EXEC_TEST: second stage and
never reaches CLONEVM_EXEC_TEST: post-exec rendezvous complete. init is
blocked in waitpid on it, so the whole service sequence stops there — bsshd,
bwm, telnetd and bounce are never spawned and the gate times out at 45s
with UNATTRIBUTED.
The guest is not dead: heartbeats continue, [net-rx-counters] samples keep
advancing, and the strand census keeps sampling to the wall clock. It is one
process wedged in a rendezvous, not a hang.
Serial
Preserved in-repo:
docs/planning/green-program/sockets/serials/aarch64-clonevm-second-stage-stall-20260829.txt
Green boots on the same run reach:
CLONEVM_EXEC_TEST: second stage
CLONEVM_EXEC_TEST: post-exec rendezvous complete
CLONEVM_EXEC_TEST: post-exec futex keys derived
CLONEVM_EXEC_TEST: PASS
The failing boot stops after second stage. Its cloned thread exits normally
([syscall] exit(0) pid=99 name=thread-99); the process itself never exits.
The strand census on the stalled boot reports live scheduling irregularity that
may or may not be related, recorded here rather than interpreted:
[SCHED_STRAND_ORACLE:aarch64:...:stranded=0:...:nonprogress=1:
queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=1599:
worst_cpu_scheduler_silence_ms=1642:worst_silence_cpu=0]
Rate, and what it is not
| tree |
profile |
boots |
occurrences |
fix/568-poll-wedge |
cortex-a72 |
30 |
1 |
fix/568-poll-wedge |
max |
10 |
0 |
main @ 6d0d2ac5 |
cortex-a72 |
30 |
0 |
1/30 against 0/30 does not discriminate, so this is not attributed to the
branch and not attributed to main. It is filed rather than absorbed
because R52 makes an unexplained boot failure gate-failing, and it now has a
name and a serial instead of a shrug.
It is not the branch's poll work: the #568 oracle PASSED on this very boot
([POLL_TCP_ORACLE:PASS:stages=3:idle_ms=128:late_ms=82:park_ms=81:attempts=1],
[init] poll_tcp_oracle exited pid=95 code=0) several service steps earlier, and
kernel/src/task/scheduler.rs on that branch is byte-identical to main.
Where to start
The marker that never arrives is the post-exec rendezvous, which is futex-based.
The adjacent history is #602/#584 (clonevm rendezvous and FUTEX_WAIT lost
wake, closed by #604) and #586 (starved wake-loss misreport). This may be a
surviving instance of that family at a much lower rate, or a distinct
exec-side ordering problem. Reproducing it will need a soak: at 1/30 a 200-boot
cortex-a72 battery is the smallest sample that says anything.
Found while re-doing #568's evidence (green program, sockets).
Summary
One boot in 30 on the aarch64
cortex-a72service-sequence profile stallsinside
clonevm_exec_test: it printsCLONEVM_EXEC_TEST: second stageandnever reaches
CLONEVM_EXEC_TEST: post-exec rendezvous complete.initisblocked in
waitpidon it, so the whole service sequence stops there —bsshd,bwm,telnetdandbounceare never spawned and the gate times out at 45swith
UNATTRIBUTED.The guest is not dead: heartbeats continue,
[net-rx-counters]samples keepadvancing, and the strand census keeps sampling to the wall clock. It is one
process wedged in a rendezvous, not a hang.
Serial
Preserved in-repo:
docs/planning/green-program/sockets/serials/aarch64-clonevm-second-stage-stall-20260829.txtGreen boots on the same run reach:
The failing boot stops after
second stage. Its cloned thread exits normally(
[syscall] exit(0) pid=99 name=thread-99); the process itself never exits.The strand census on the stalled boot reports live scheduling irregularity that
may or may not be related, recorded here rather than interpreted:
Rate, and what it is not
fix/568-poll-wedgefix/568-poll-wedgemain@6d0d2ac51/30 against 0/30 does not discriminate, so this is not attributed to the
branch and not attributed to
main. It is filed rather than absorbedbecause R52 makes an unexplained boot failure gate-failing, and it now has a
name and a serial instead of a shrug.
It is not the branch's poll work: the #568 oracle PASSED on this very boot
(
[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=128:late_ms=82:park_ms=81:attempts=1],[init] poll_tcp_oracle exited pid=95 code=0) several service steps earlier, andkernel/src/task/scheduler.rson that branch is byte-identical tomain.Where to start
The marker that never arrives is the post-exec rendezvous, which is futex-based.
The adjacent history is #602/#584 (clonevm rendezvous and
FUTEX_WAITlostwake, closed by #604) and #586 (starved wake-loss misreport). This may be a
surviving instance of that family at a much lower rate, or a distinct
exec-side ordering problem. Reproducing it will need a soak: at 1/30 a 200-boot
cortex-a72battery is the smallest sample that says anything.Found while re-doing #568's evidence (green program, sockets).