Page MenuHomePhabricator

init: Signal-safe instant shutdown
ClosedPublic

Authored by PiRK on Nov 18 2022, 10:15.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC472e6c7dc426: init: Signal-safe instant shutdown
Summary

Replace the 200ms polling loop with a faster and more efficient waiting
operation. This should speed up short RPC tests.

This was tried a few times before, but given up every time because
solutions use a condition variable which is not safe for use in signals
as they need to be reentrant.

On UNIX-ish OSes, use a safe way: a pipe. When shutdown is requested
write a dummy byte to the pipe. Waiting for shutdown is a matter of a
blocking read from the pipe.

On Windows, there are no signals so using a condition variable is safe.

This is a backport of core#20605

Test Plan

ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable