#1 - If it is a new program, its got a bug and is attempting to access memory it does not own. Another name for it is a segfault.

#2 - If it is a truly tested program, and you are sure it is bug free (as much as you can, relative term here), you may be looking at a corrupted program on disk that then loads and attempts to access memory it does not own due to program corruption screwing up its addressing, or:

#3 - You really do have bad memory that flips a bit occasionally, or:

#4 - Now we get into the odd hardware areas, flaky CPU, cracked motherboard, etc.


A disk problem can trigger #2 by corrupting the image on disk.