Use notification pipe hangup as shutdown event notification response.
This now handles POLLHUP and POLLNVAL on the shutdown command response pipe as shutdown notifications, closing a race where the client thread called poll(2) just after the sender thread closed the notification pipe, leading to an unnoticed POLLNVAL & retry cycle, blocking forever. (This race condition was easiest to reproduce by setting up a KineticClient, then shutting it down without doing anything, in a loop.) Also, add some shutdown logging statements (with high log levels) and make sender_register_socket and sender_remove_socket calls ignored after sender_shutdown has been called.
Loading
Please sign in to comment