Začal jsem číst
The SIGALRM handler of this OpenSSH version calls packet_close(), which
calls buffer_free(), which calls xfree() and hence free(), which is not
async-signal-safe:
... a hned jsem přestal.
Kolik takového kódu existuje? Nechcete někdo přepsat SSH do něčeho lepšího?
Já jsem tedy C++ programátor, ale nikdy bych si nedovolil v signalhandleru dělat něco jiného než jen nastavit příznak nebo nějaký eventfd, a ten si vyzvednout mimo signal handler.
Zpravidla na zpracování signálů mám vlákno, kterého vzbudím s tím, že dostane informace o signálu.