Classifying non-regular bugs. (My opinion)
I usually classify non-regular bugs into 3 category.
(*1) : caused by timing. In multi-threaded software, sometimes unexpected execution order – ex. race condition – may raise error.
(*2) : caused by memory corruption. Memory is corrupted by some reasons – this is root cause, and because of this, error is occurred irregularly.
(*3) : caused by using uninitialized data.
Knowing that which category the bug belongs to, is very difficult and usually, only based on developer’s experience.
Here one tip comes from my experience.
In case (*2) :
reproducing way itself seems to be very irregular and the representation(result) of crash is also very un-determined.
In case (*3) :
even if reproducing sequence is irregular too, the representation(result) tends to be simlar among cases. Usually, software is crashed from ‘wrong memory reference’. And the overall outlook of crash is very regular.