Repository navigation
Commit 74b66e2
fix(vsock): kick() must not arm the RX gate on a plain vm resume
kick() runs on EVERY vm resume (Vmm::resume_vm -> kick_virtio_devices),
not just the restore-resume it was written for, and it unconditionally
armed pending_event_ack. On a PLAIN pause->resume (no snapshot anywhere
in between) no TRANSPORT_RESET was queued, so the guest has nothing to
ack and the gate never clears: every host->guest vsock delivery
black-holes (process_rx short-circuits) and the event loop busy-spins
at 100% CPU on the backend's undeliverable pending-RX (level-triggered
epoll). Hit in production by ADR 0074 rung-2 parked-paused eviction,
whose un-pause is exactly a plain PATCH /vm Paused -> Resumed cycle;
also latent on the ADR 0045 admin pause/resume and migration-abort
resume paths.
Fix: kick() signals (evq + TX-notification replay) only when
pending_event_ack is ALREADY armed, and never arms it itself — the two
paths that queue a reset own the arming: prepare_save (in-process, the
diff-checkpoint source resume) and now restore() (cross-snapshot,
re-armed from the saved activation flag since the gate flag itself is
not persisted; an activated snapshot always carries a queued reset
because prepare_save runs on every save).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014jJi2vqAaxt3Q5UKxbe4Gx1 parent fbe29dd commit 74b66e2
2 files changed
Lines changed: 113 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
403 | 403 | | |
404 | 404 | | |
405 | 405 | | |
406 | | - | |
407 | | - | |
408 | | - | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
409 | 423 | | |
410 | 424 | | |
411 | 425 | | |
| |||
618 | 632 | | |
619 | 633 | | |
620 | 634 | | |
621 | | - | |
622 | | - | |
623 | | - | |
624 | | - | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
625 | 640 | | |
626 | 641 | | |
627 | 642 | | |
628 | 643 | | |
629 | | - | |
| 644 | + | |
630 | 645 | | |
631 | 646 | | |
632 | 647 | | |
633 | 648 | | |
634 | | - | |
| 649 | + | |
635 | 650 | | |
636 | 651 | | |
637 | | - | |
| 652 | + | |
638 | 653 | | |
639 | 654 | | |
640 | 655 | | |
641 | 656 | | |
642 | 657 | | |
643 | 658 | | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
644 | 688 | | |
645 | 689 | | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
650 | 695 | | |
651 | 696 | | |
652 | 697 | | |
653 | 698 | | |
| 699 | + | |
654 | 700 | | |
655 | 701 | | |
656 | 702 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
117 | 126 | | |
118 | 127 | | |
119 | 128 | | |
| |||
145 | 154 | | |
146 | 155 | | |
147 | 156 | | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
148 | 201 | | |
149 | 202 | | |
150 | 203 | | |
| |||
0 commit comments