rpc_svc_calls(3nsl): svc_run() can return
In the rpc_svc_calls(3nsl) man page it is stated that svc_run() never returns:
The svc_run() function never returns. In single-threaded mode, the function waits for RPC requests to arrive. When an RPC request arrives, the svc_run() function calls the appropriate service procedure. This procedure is usually waiting for the poll(2) library call to return.
This is basically not true. The fact that svc_run() could return (and how) is documented in the same man page:
The svc_exit() function when called by any of the RPC server procedures or otherwise, destroys all services registered by the server and causes svc_run() to return.
Also, the svc_run() implementation clearly shows that svc_run() can return.