Abbiamo un errore di lunga data nel nostro codice di produzione. Questo è essenzialmente un daemon basato su socket. Ascolta un gruppo di file scansionati usando select.Seleziona EBADF: quale FD è cattivo?
Occasionalmente (una volta al giorno circa), la selezione verrà restituita con EBADF.
Ho scritto codice per cercare l'archivista non valido, che scorre su ogni fd e chiama su di esso. Queste chiamate non restituiscono mai EBADF. Ho anche provato fstat. Inoltre non restituiscono mai EBADF.
Ho anche riscritto il daemon per utilizzare il poll. Questo non ha aiutato.
Qualcuno ha qualche altra idea? (a parte ho fatto un errore stupido, che è tutto facile da fare con select).