Io credo che l'integer overflow non gestito sia uno dei bug più comuni del mondo informatico.
-
Io credo che l'integer overflow non gestito sia uno dei bug più comuni del mondo informatico.
Ieri mezza fabbrica si è fermata per quasi un giorno intero a causa di questo. In realtà non avendo accesso al sorgente e non essendoci errori nei log ho fatto una diagnosi puramente comportamentale, ma Rockwell ha confermato la correttezza delle assunzioni dopo poche ore.
In pratica a partire da una data specifica una certa funzione si è bloccata contemporaneamente su più server. Anche in ambiente di DEV. La funzione veniva chiamata, presentava una finestra che flashava e scompariva. Sul log indicava alla stessa data e ora l'attivazione e l'annullamento, che in realtà non c'era.
Ma c'era.
Questa finestra fa partire un timer che aspetta per la sua durata, configurabile, dopodiché annulla l'operazione. Non si può disattivare, e i nostri geniali ingegneri hanno comunemente deciso di popolare quel parametro con un valore di "99999h:59m:59s". Adesso vi lascio immaginare cosa sia successo a partire da ieri.
Spoiler
OK, se hai fatto il conto, manchiamo il bug 2038 per qualcosa come 8000 e rotte ore, meno di un anno, però non sappiamo come questo timeout venga impastato con altri parametri e in quale punto esatto l'intero si rompa. Potrebbe anche essere un integer underflow per quello che ne so, ma rimane il fatto che la finestra si chiude e l'operazione si annulla perché la condizione del timeout viene considerata soddisfatta.
La morale è sempre quella
Fai merenda con girella.
Qualche zucchero in più non fa male se devi usare il cervello.
Se poi sviluppi software, oltre a imparare da uno bravo, controlla i tuoi interi e se invece lo smanetti e basta non usare MAI valori limite, ma mettici la testa: non ha senso un timeout di 10 anni. Considerato tutto, in questo caso, 1 settimana sarebbe sufficientemente cautelativa.
-
undefined Oblomov ha condiviso questa discussione
undefined rag. Gustavino Bevilacqua ha condiviso questa discussione
undefined Maronno Winchester :antifa: ha condiviso questa discussione