2010-02-10 5 views
5

Estoy usando la llamada POSIX nftw() para atravesar una estructura de directorio. La estructura del directorio es plana: solo 4 archivos y sin subdirectorios.Fugas de descriptor de archivo en nftw (FTW_CHDIR)?

Sin embargo cuando llamo nftw() muchas veces en este directorio plano en cuando me siento un mensaje de error después de un tiempo:

"too many open file handles". 

Resultó que esto sucede cuando se utiliza la bandera FTW_CHDIR.

¿Estaría de acuerdo en que es un error en la implementación de Linux de nftw()?

ACTUALIZACIÓN

Una corrección está ahora disponible en los repositorios de glibc.

aquí hay algunos enlaces a código fuente que he utilizado para la prueba:

ACTUALIZACIÓN

  • MacOS-X es también golpeado por el insecto
  • solaris9, Solaris 10 y AIX 5.3 hacer no tienen el insecto

Respuesta

6

Para mí parece que realmente hay algo mal con el nftw implementación en Linux.

he presentado un informe de error, consulte here

ACTUALIZACIÓN: Una corrección está disponible en los repositorios de glibc ahora.

+0

wow, que era una solución rápida - http://sourceware.org/git/?p=glibc.git;a=commit;h=247fdf2e2b798378d8aeaac1ee6f4ba0a49f31f3 – mark4o

+0

1 para enviar el fallo informe y el seguimiento. –

0

Tiene el mismo comportamiento en Mac OS 10.6.2. Probablemente, de alguna manera, parte de la especificación, aunque no veo cómo exactamente.

+0

eso es interesante. Nuestro código del mundo real es multiplataforma, incluido MacOS. Voy a comprobar si mañana también sucede en nuestra aplicación MacOS. –

0

Relacionado con Mac OS: bugreport enviado a Apple como radar # 7640283. (. Sin hipervínculo posible, por desgracia)

+0

Dado que los bits BSD de Apple son en su mayoría idénticos a los de FreeBSD, me pregunto si se trata de un error heredado de allí. – ephemient

Cuestiones relacionadas