If a signal handler is registered and unregistered later, tevent_loop_wait() never finishes. This is because tevent internally registers its own signal handler "sig_pipe_handler". This handler is never removed, which causes program to stuck in tevent_loop_wait() even if there are no custom handlers registered.
Created attachment 9039 [details] reproducer gcc -ltalloc -ltevent tevent_loop_forever.c -o tevent_loop_forever ./tevent_loop_forever
Fixed with tevent-0.9.19