У нас есть давняя ошибка в нашем производственном коде. По сути это демон на основе сокетов. Он слушает кучу файловых дескрипторов, используя select.
Иногда (один раз в день или около того) выбор возвращается с EBADF.
Я написал код для поиска плохого файлового дескриптора, который зацикливается на каждом fd и вызывает select для него. Эти звонки никогда не возвращают EBADF. Я тоже пробовал fstat. Они также никогда не возвращают EBADF.
Я также переписал демон, чтобы использовать опрос. Это не помогло.
У кого-нибудь есть другие идеи? (кроме того, что я сделал глупую ошибку, которую легко сделать с помощью select).