External pager resets custom SIGINT handlers to SIG_DFL
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 82/100
Hướng nghiên cứu
Bắt đầu với More() trong fire/console/console_io.py và kiểm tra cách chương trình chạy trình phân trang bên ngoài cũng như xử lý ngoại lệ. Lưu handler đang hoạt động trước khi SIGINT bị bỏ qua, sau đó đảm bảo handler được khôi phục sau khi trình phân trang thoát, kể cả khi có ngoại lệ. Công việc hoàn tất khi handler trước đó vẫn được cài đặt trong cả hai trường hợp; issue không cung cấp tệp kiểm thử, vì vậy hãy xác định một kiểm thử phù hợp cho hành vi này.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In fire/console/console_io.py, the More() function temporarily ignores SIGINT while an external pager runs.
However, it restores SIG_DFL instead of the handler previously installed by the application.
Problematic code
signal.signal(signal.SIGINT, signal.SIG_IGN)
# Execute external pager
signal.signal(signal.SIGINT, signal.SIG_DFL)
Expected behavior
The function should preserve the existing signal handler and restore it after the pager exits, including when an exception occurs.
Actual behavior
Based on the code, applications using custom SIGINT handlers lose their original handler after pager execution. Exceptions may also leave SIGINT ignored.
Suggested fix
Save the original handler and restore it in a finally block.
Testing
Identified through source-code inspection. An interactive pager reproduction has not yet been executed.
- Ngôn ngữ chính
- Python
- Star
- 28.2k
- Fork
- 1.5k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của google/python-fire
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
google/python-fire#733 ·
-
EllipsisMiddleTruncate exceeds requested width when only the ellipsis fitsCó thể đã có người làm @hugosmoreira đã nhận 14 ngày trước. Đang mở
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 88/100
google/python-fire#722 · 1 bình luận ·
-
Windows ANSI initialization uses nonexistent subprocess.STD_OUTPUT_HANDLECó thể đã có người làm @Fire162 đã nhận 11 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
google/python-fire#721 · 1 bình luận ·
-
Setup docs still say `python setup.py install`, but `setup.py` was removedCó thể đã có người làm @GreedyC đã nhận 18 ngày trước. Đang mở
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 93/100
google/python-fire#718 · 1 bình luận ·
-
Calling an async command from an active event loop raises RuntimeError and leaves an unawaited coroutineCó thể đã có người làm @aashish254 đã nhận 20 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
google/python-fire#716 ·
Tất cả issue của google/python-fire
Issue tương tự
-
`destroy` sans terminal répond « Aborted. » au lieu de réclamer `--yes` comme `clean` et `reset`Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
stephrobert/dsoxlab#354 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
jasonacox/pypowerwall#472 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: DoubleMLRDDData accepts a score_col that is no data column (as in its docstring example); the running variable then becomes a covariate and RDFlex failsCó thể đã có người làm @vrjdev đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
DoubleML/doubleml-for-py#455 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Python mod.Box[T] annotation gets a false generic_arg edge that replaces the parameter_type one ('is' on tree-sitter nodes)Có thể đã có người làm @rohit-jsfreaky đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Graphify-Labs/graphify#5110 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
assafelovic/gpt-researcher#2277 ·
Maintainer thường phản hồi trong vòng 10 ngày