Is good to be right
Poco prima del rilascio di DotNet 1.1 mi era stato assegnato un baco molto strano. In una situazione di multi-threading un pezzo di codice del dataset aveva cominciato a causare deadlocks. Siccome il baco non si manifestava nella versione 1.0, il baco era stato qualificato come regression. La cosa strana è che lo specifico pezzo di codice non era mai stato modificato tra la versione 1.0 e la versione 1.1. Cos'era successo: il baco era già li, ma ben nascosto. A causa della modifica dell'algoritmo della garbage collection il baco aveva cominciato a manifestarsi. Morale della favola: il multi-threading tende ad allontanare nello spazio tempo causa ed effetto, tocca guardare molto più lontano del solito.
Considerando il fatto che si è verificato un episodio del tutto analogo anche ieri ho cominciato a pensare ad un teorema:
Legge di Murphy-Paperino sul multithreading
È inutile cercare il deadlock nel pezzo di codice più ovvio; sarà solo fatica sprecata.
happy bug hunting!
-quack