Closed
Description
file descriptor の最大値を指定している環境で yrmcdsを動かして, その yrmcds に対してベンチマークを取っていたときに, accept: Too many open files
が止まらなくなりました.
ベンチマーク用のプログラムを止めても出続けました.
そのとき CPU 1個ぶんが 100%になっていたのと、 strace をかけたときに accept4() が連続して出力されたことから, この 箇所 で無限ループしているのではないかと思いました。
Design Notes によれば, reactor が socket closeを担うそうなので, reactor で on_readable() を呼び出し, その内部でループしてしまうと, reactorによる file descriptorの解放ができないので, on_readable() 内部のループから抜け出せないのではないかと推測しました(正しいかどうかまでは確認していません).