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