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]
Ma poveri picci, gli altri programmatori avevano voluto tenersi un souvenir dal passato, Balmer non l’aveva mica capito.. :-P
non si tratta di FreeBSD ma di openbsd