option to not override signal handler
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu trong ipykernel/kernelbase.py tại pre_handler_hook và theo dõi cách dispatch_shell gọi nó. Xác định cách một ứng dụng nhúng có thể chọn không thay thế trình xử lý SIGINT của mình, sau đó xác minh rằng trình xử lý tùy chỉnh vẫn nguyên vẹn trong khi việc xử lý tín hiệu bình thường của kernel vẫn hoạt động.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
See also https://github.com/jupyter/qtconsole/issues/490
Hey there,
how can I embed qtconsole into an application without it overriding my own application's custom sigint handler?
Assume you have code that does
std::signal(SIGINT, &handleSigInt);
...
// do not initialize signal handlers
const auto initsigs = 0;
Py_InitializeEx(initsigs);
Then it is embedding qtconsole eventually, but at that point the sigint handler will be unset:
Thread 1 "QiTissue" hit Breakpoint 3, __interceptor_sigaction (signum=2, act=0x7fffffff8a60, oldact=0x7fffffff8b00)
at /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc:55
55 in /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
(gdb) bt
#0 __interceptor_sigaction(int, __sanitizer::__sanitizer_sigaction const*, __sanitizer::__sanitizer_sigaction*)
(signum=2, act=0x7fffffff8a60, oldact=0x7fffffff8b00)
at /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc:55
#1 0x00007fff5c055f0f in PyOS_setsig (sig=sig@entry=2, handler=handler@entry=0x7fff5c0b6fec <signal_handler>)
at Python/pylifecycle.c:2536
#2 0x00007fff5c0b849f in signal_signal_impl
(module=<optimized out>, handler=<built-in method default_int_handler of module object at remote 0x7fff51eeaa40>, signalnum=2) at ./Modules/signalmodule.c:505
#3 signal_signal (module=<optimized out>, args=<optimized out>, nargs=<optimized out>)
at ./Modules/clinic/signalmodule.c.h:141
#4 0x00007fff5bf7bbf8 in cfunction_vectorcall_FASTCALL
(func=<built-in method signal of module object at remote 0x7fff51eeaa40>, args=0x7fff58a24a88, nargsf=<optimized out>, kwnames=<optimized out>) at Objects/methodobject.c:426
or in python terms:
(gdb) py-bt
Traceback (most recent call first):
<built-in method signal of module object at remote 0x7fff51eeaa40>
File "/usr/lib/python3.9/signal.py", line 47, in signal
handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
File "/home/milian/.local/lib/python3.9/site-packages/ipykernel/kernelbase.py", line 280, in pre_handler_hook
self.saved_sigint_handler = signal(SIGINT, default_int_handler)
File "/home/milian/.local/lib/python3.9/site-packages/ipykernel/kernelbase.py", line 257, in dispatch_shell
self.pre_handler_hook()
the kernelbase.py code seems to reset the signal handler unconditionally to some default which is highly unexpected to me:
def pre_handler_hook(self):
"""Hook to execute before calling message handler"""
# ensure default_int_handler during handler call
self.saved_sigint_handler = signal(SIGINT, default_int_handler)
Is there a way to prevent this from happening?
- Ngôn ngữ chính
- Python
- Star
- 734
- Fork
- 411
- Merge trung bình
- 1 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 9
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 ipython/ipykernel
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
-
ipython/ipykernel#1550 · 1 bình luận · 1 reaction · 1 người được giao ·
Tất cả issue của ipython/ipykernel
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
canonical/paas-charm#368 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
tech debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
addition to tracking list Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
StevenBlack/hosts#3256 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
qualcomm/qai-appbuilder#275 ·