If caller installs a signal handler for any of its threads, then this signal handler will get triggered even if thread is currently executing RPC method. There are many possible ways to do that:
- send a signal to the thread using
kill()
- schedule
alarm()
This breaks caller - callee separation guarantees of RPC call mechanism: Caller can not execute any own code inside the RPC context and vice versa.
Q&D solution would be to disable signal emission while inside RPC calls. While recently there was an entirely new and independent mechanism added for notifications, better solution might be to retire the signal subsystem entirely as they are kind-of redundant.