env: apply --ignore/--default/--block-signal to real-time signals#12703
env: apply --ignore/--default/--block-signal to real-time signals#12703sylvestre wants to merge 2 commits into
Conversation
|
GNU testsuite comparison: |
a53349d to
6d353ac
Compare
Merging this PR will degrade performance by 3.42%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | echo_consecutive_calls |
121.7 µs | 126 µs | -3.42% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing sylvestre:env-timeout-rtsignals (3eb6e0d) with main (b2ddbab)2
Footnotes
-
46 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
-
No successful run was found on
main(758791a) during the generation of this report, so b2ddbab was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
…lpers ChildExt::send_signal/send_signal_group and install_signal_handler went through nix's Signal enum, which cannot represent SIGRTMIN..=SIGRTMAX, so real-time signals were silently dropped (e.g. timeout never forwarded them). Send signals via rustix (kill_process/kill_current_process_group), building the Signal with from_raw_unchecked for the real-time range. While here, move the remaining helpers off nix and onto rustix (geteuid/getegid/getgid/getpid/getpgrp/getsid, fstat, poll). Signal dispositions still use libc: rustix only exposes them in its experimental, doc(hidden) runtime module, which is undefined behavior in a process that links libc. Should make test tests/env/env-signal-handler.sh pass
signal_from_value converted via nix's Signal enum, which has no variants for SIGRTMIN..=SIGRTMAX, so those actions were silently skipped. Carry the raw signal number and apply the disposition with libc (rustix has no stable signal-disposition API). Should make test tests/env/env-signal-handler.sh pass
6d353ac to
3eb6e0d
Compare
Should make test tests/env/env-signal-handler.sh pass