Attualmente mi trovo di fronte a uno dei bug più malvagi che abbia mai affrontato in un grande e complesso progetto su cui sta lavorando la mia squadra. Stiamo usando C++ come linguaggio di programmazione e attualmente Visual Studio per lo sviluppo, sebbene il prodotto finale sia destinato a funzionare su più piattaforme.Descrivere e trovare un bug corrotto dallo stato che causa arresti apparentemente casuali
Il bug:
C'è un bug nel nostro sistema che fa scattare gli arresti in punti apparentemente casuali di esecuzione. Le cause di crash di solito sono violazioni degli accessi in lettura degli indirizzi che cambiano ogni volta che il programma viene eseguito. A volte otteniamo anche errori di danneggiamento dell'heap. Gli stack di chiamate ci portano a punti variabili nel nostro codebase e raramente a qualche libreria esterna (Lua nel nostro caso), dove il bug chiaramente non mente.
Sembra che questo bug si sia sviluppato negli ultimi 4 mesi. Quel periodo di tempo fa, all'incirca, alcuni membri del mio team hanno visto il programma di frontend in crash in modi e luoghi molto simili a quello che succede ora.
Alcuni dettagli:
La nostra base di codice è di circa 800K linee di puro C++ (commenti escluse) grande, ed è stato sviluppato nel corso di 3 anni. Il progetto attuale pesa circa 300K. Abbiamo usato test unitari eccessivi e altri modi per eliminare i bug prima che accadessero, come asserzioni, puntatori intelligenti e così via prima.
Gli altri e ho cercato di trovare questo bug (s) per oltre 2 settimane. Sta diventando più di un incubo per me. In un progetto così complesso, anche il buon vecchio debug di printf sembra fallire di fronte alla complessità che ora ha.
Le mie domande
Che tipo di bug siamo di fronte qui? C'è anche un nome per questo? Questo tipo di bug si verifica più o meno spesso in altri progetti di grandi dimensioni?
Cosa possiamo fare per trovarlo ed eliminarlo dopo aver trascorso 2 settimane di debug infruttuoso utilizzando varie utilità, su varie piattaforme e con varie impostazioni di compilazione?
(La mia domanda precedente era chiuso, quindi sto cercando di formulare meglio e con più dettagli questa volta, link: https://stackoverflow.com/questions/7154645/how-is-this-kind-of-bug-called)
Arf, i bug sporadici sono i peggiori. È ora di imparare a utilizzare gli strumenti di debug. –