Bugfixes: 25 anni per sistemare un bug!

di Emanuele L. Cavassa 3

Alla base del cuore di Mac OS X c’è Darwin, un sistema operativo nato dalla fusione del kernel Mach con FreeBSD.
FreeBSD è un sistema operativo opensource di derivazione Unix, portato avanti dall’università di Berkley.


Alla base di moltissimi sistemi operativi moderni ci sono delle derivazioni di BSD, oltre al nostro Mac OS X.


Dalla sua nascita, però, il sistema ha sofferto di un bug, recentemente corretto da un programmatore svizzero, Marc Balmer.
La stranezza? Il bug è presente dalla versione 4.2BSD, nata nel 1983. Siamo nel 2008, e sono passati 25 anni da allora.


Il bug è presente nella gestione di alcune funzioni, telldir(), seekdir() and readdir(), di cui in particolare a soffrirne è seekdir(): una volta invocata, non restituisce la corretta posizione della cartella.


Ad essersi accorti per primi di questo bug sono stati gli sviluppatori del progetto Samba. Infatti nel creare la metodologia di connessione con le reti Microsoft da parte dei sistemi Unix, si sono resi conto di come quelle funzioni restituissero degli errori.
Però, invece che correggere o segnalare agli sviluppatori dei sistemi di derivazione BSD l’errore, hanno preferito scriversi le proprie routine che aggirassero il problema, lasciando il bug insoluto a permanere nei sistemi che si basano su questa distribuzione Unix.


Marc Balmer nel suo blog afferma di essere sicuro che molti altri programmatori abbiano incontrato il bug ed abbiano preferito lasciarlo dove stava senza andare a correggerlo.


La cosa strana è che Balmer abbia trovato il bug assolutamente semplice da sistemare, chiedendosi quindi per quale motivo non l’avesse fatto nessuno prima di lui, addirittura chi aveva incontrato problemi per quell’errore di programmazione ha preferito aggirarlo piuttosto che correggerlo.


Questa situazione fa comunque pensare: quanti altri bug insignificanti sono contenuti nei sistemi operativi che usiamo ogni giorno e da quanto sono presenti senza che l’utente finale se ne accorga mai?


Ma sopratutto: anche Mac OS X ne è affetto? In fondo Darwin non è una semplice distribuzione di BSD, ma è un sistema prodotto dall’unione del sistema operativo NeXT con FreeBSD, quindi potrebbe essere che le porzioni di codice errato non siano state incluse nel nostro sistema (oppure che siano state modificate come per Samba, rendendo nullo l’errore).
Infatti un commentatore del blog di Balmer ha creato un file con cui testare il problema, che se eseguito su Mac OS X restituisce un errore simile ma non identico.


Balmer ha segnalato il bug con relativa soluzione ai vari sviluppatori di sistemi derivati da FreeBSD, ora c’è da vedere se e quando Apple correggerà l’errore in Darwin.



[Via]