... il fiume screziato,
che scorre di continuo,
e mai due volte nello stesso modo,
fluendo per molti luoghi,
come se stesse immobile in uno.
... nell'atmosfera
senz'ombra,
la conoscenza delle
cose è dappertutto ma non percepita.
Wallace Stevens
I forni erano montati all'interno del capannone in fila con un discreto ordine ed erano verniciati di un color sabbia piuttosto neutro. Questo li rendeva tutto sommato abbastanza attraenti, anche se il colore blu dei carter mi lasciava sempre un po’ perplesso.
Il sitema di controllo era il solito trittico di schede: scheda display, scheda temperatura, scheda potenza.
L’interfaccia di temperatura e il display erano collegate via seriale con un protocollo standard jbus ( un modbus modificato ). Il display basato su ARM oltre alla linea di comunicazione dati con la scheda di temperatura prevedeva una linea di allarme dedicata per l'autospegnimento che veniva effettuato direttamente dalla scheda di potenza. Anche quella volta, ricordo, si inziò la produzione verso la fine dell'inverno.
I primi clienti di quella meravigliosa primavera, chiamavano non chiedendoci come stavamo di salute (ingrati), ma bensì bestemmiando come lupi turchi perchè le macchine, dopo mesi di corretto funzionamento, senza alcun preavviso dopo una giornata lavorativa, si spegnevano da sole.
Se la macchina non era presidiata la cosa ovviamente era particolarmente pericolosa, perché proprio per la tipologia di uso del macchinario, spegnere la macchina durante il processo di produzione poteva portare a condizioni estreme di incendi spontanei dovuti dalla permanenza di schede elettroniche all’interno di camere che, per inerzia termica, avrebbero mantenuto elevate temperature.
Gli interventi telefonici non portarono ad alcun risultato. Così fummo costretti ad una sostituzione al cliente ed una riparazione in sede.
Come era facile immaginare, il forno fu ritestato e ricollaudato senza rilevare il problema. Pur restando accesa per giorni, il guasto denunciato, come prevedibile, era sparito. Nello stesso momento, dopo alcuni giorni lavorativi, il forno spedito al cliente in sostituzione, cominciò anch’esso a spegnersi spontaneamente nelle stesse modialità del forno precedente.
Tutto questo avveniva sempre alla fine della giornata e sempre senza alcun avviso preliminare.
Uno dei bug più celebri che un programmatore "vero" prima o poi dovrà affrontare nella sua vita, è chiamato in gergo dead lock. In italiano il dead lock viene tradotto abbraccio mortale ed è un particolare bug che si viene a creare nel nostro software/firmware, in particolar modo quando il nostro sistema prevede più processi concorrenti.
Per capire meglio cosa significa, in questa pagina di wikipedia viene spiegato il termine (link).
Per quale motivo ho pensato subito a questa condizione ?
Molto semplicemente perché l’unico fattore che poteva portare ad una richiesta di spegnimento istantaneo, era legata solo alla condizione di un deadlock rilevato dal watchdog.
Si lo so, molti di voi esausti arricceranno il naso infastiditi per questi termini tipo watchdog, ma la traduzione in italiano cane da guardia è un po' troppo generica. Evito di aggiungere definizioni alle definizioni disponibili, così riprendo la spiegazione di watchdog presa da wikipedia (link) perchè è sufficientemente esaustiva ai miei scopi.
Questa mia infausta convinzione mi ha portato ad una penosa e faticosa ricerca delle condizioni in grado di generare un dead lock nel mio firmware, distogliendomi però da un fattore importante.
Quello che sottovalutavo era che il sistema elettronico non era fine a se stesso, ma era parte integrante del sistema più ampio che era appunto … il forno.