GCWing / GCWing/OpenBitFun

[Bug]: CLI treats a macOS process group as exited while TERM-resistant children remain alive

Đã đóng
#2,645 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Rust
Star
2.3k
Fork
231
Merge trung bình
2 giờ 49 phút
Pull request đã merge (30 ngày)
589

Mô tả

## Summary

On macOS kill(-pgid, 0) returns ESRCH for an orphaned process group whose only remaining members are TERM-resistant children, so wait_for_process_group_exit believed the group had exited and terminate_worker returned early, letting SIGKILL follow a vanished leader.

The macOS branch of process_group_alive now enumerates group members with pgrep -g (Apple's ps -g is a no-op unless unix2003 compat mode is active) and requires at least one live member judged with the existing macos_process_state_allows_escalation stat semantics; a failed or empty query fails closed. The Linux kill(-pgid, 0) + EPERM path is unchanged.

## Area

src/apps/cli/src/dispatch/runner.rs (process_group_alive only). Crate: bitfun-cli.

## Reproduction or evidence

At 32f2427697, process_group_alive (:206-215) is a single kill(-pgid,0) probe with no macOS branch; macos_process_state_allows_escalation (:262-269) already encodes live-state/no-exit-modifier semantics used by process_alive. Test: cancellation_does_not_escalate_after_term_exits_the_verified_leader fails when the leader is reaped while TERM-resistant children survive.

## Environment

macOS runners (Apple ps -g is a no-op unless unix2003 compat mode is active; pgrep -g is the reliable PGID probe); baseline 32f2427697. A Windows host cannot compile the macOS face, so verification of that face relies on the remote CI CLI Tests(macos) run for the corresponding PR; unix-only tests are cfg-excluded on Windows locally.

---
AI-assisted change. Testing: verified locally (`cargo check -p bitfun-cli` exit 0; `cargo test --bin bitfun dispatch::runner` 7 passed, 0 failed); macOS face covered by remote CI CLI Tests(macos).

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start in src/apps/cli/src/dispatch/runner.rs at process_group_alive, then read macos_process_state_allows_escalation and the cancellation_does_not_escalate_after_term_exits_the_verified_leader test. Verify the macOS process-group behavior with the existing runner tests and cargo check -p bitfun-cli; done means the local tests pass and the macOS CLI Tests run confirms the macOS face.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
macos, rust
Lĩnh vực
cli, operating-systems
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
72/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.