La gente de Samba documentaba el tema de la siguiente manera:
This is needed because the existing directory handling in FreeBSD and OpenBSD (and possibly NetBSD) doesn't correctly handle unlink() on files in a directory where telldir() has been used. On a block boundary it will occasionally miss a file when seekdir() is used to return to a position previously recorded with telldir().Aproximandamente, la explicación de lo que sucede es la siguiente:si usamos un código para recorrer directorios,usamos telldir() para guardar la posición actual, y posteriormente volvemos a ella con seekdir(), si ha ocurrido un borrado (unlink()) de alguno de los elemenos, no vuelve a la posición correcta.
Esta historia lleva a unas pocos reflexiones interesantes.
- No por tener las fuentes los fallos aparecen y se corrigen antes. Hay que saber explicar y proporcionar los test que llevan a la reproducción de los fallos para corregirse y sobre todo, hay que saber cómo y donde buscar.
- A veces, la gente se preocupa de programar con Linux como objetivo, siempre cuesta un poco de tunning por mucho configure y portable que sea el código que funcione en otros Unix (con o sin fuentes) algunos programas.
- Se tiende a establecer workarounds para fallos de los sistemas, cosa que luego los enquista y hacen que para que funcione tal o cual programa se tenga que mantener un código de compatibilidad que acaba por frenar la evolución. Windows es la prueba de ello.
- A veces la comunicación entre diferentes proyectos de fuentes abiertas es complicada, en especial cuando hay que demostrar de quien es la culpa
No hay comentarios:
Publicar un comentario