2010-02-10 13 views
5

Sto usando la chiamata POSIX nftw() per attraversare una struttura di directory. La struttura della directory è piatta: solo 4 file e nessuna sottodirectory.Perdita del descrittore di file in nftw (FTW_CHDIR)?

Tuttavia quando chiamo nftw() un sacco di volte in questa directory piatto tanto sono un messaggio di errore dopo un po ':

"too many open file handles". 

Si è scoperto che questo accade quando si usa il flag FTW_CHDIR.

Sei d'accordo che si tratta di un bug nell'implementazione Linux di nftw()?

UPDATE

Una correzione è ora disponibile nei repository glibc.

qui sono alcuni link al codice sorgente che ho usato per la prova:

UPDATE

  • MacOS-X è anche colpito dal bug
  • Solaris9, Solaris 10 e AIX 5.3 fare non hanno il bug

risposta

6

Per me sembra che ci sia davvero qualcosa che non va con la nftw implementazione su Linux.

ho presentato un bug report, vedere here

UPDATE: Una correzione è disponibile nei repository glibc ora.

+0

wow, che era una soluzione rapida - http://sourceware.org/git/?p=glibc.git;a=commit;h=247fdf2e2b798378d8aeaac1ee6f4ba0a49f31f3 – mark4o

+0

+1 per il bug relazione e il seguito. –

0

Ha lo stesso comportamento su Mac OS 10.6.2. Quindi probabilmente in qualche modo parte delle specifiche, anche se non vedo come esattamente.

+0

è interessante. Il nostro codice del mondo reale è multipiattaforma, incluso MacOS. Vado a controllare domani se succede anche nella nostra applicazione MacOS. –

0

Per quanto riguarda il sistema operativo Mac: bugreport inviato ad Apple come radar # 7640283. (. Nessun collegamento ipertestuale possibile, purtroppo)

+0

Dato che i bit BSD di Apple sono per lo più identici a quelli di FreeBSD, mi chiedo se sia un errore ereditato da lì. – ephemient

Problemi correlati