Although crashes caused by hardware are possible, most computer crashes are caused by errors in the OS software.
SciAm
There are 3 fundamental types of computer program errors that are related to when/how the error is discovered: Compile-time errors, Run-time errors, and “silent” errors. Runtime errors are the ones that result in crashes that you see as a user.
Software Explained
List from Quora
- Null Pointer Exception
- Function has bad inputs
- Read/write past boundaries of an array or tap into a non-existent array
- Write to a string that doesn’t have memory allocated (like #3)
- Pointer doesn’t point to a valid place
- Files or ports or connection handles are bad — in which case we use defensive programming to prepare for worse case
- Something mathematical is wrong like divide by zero
- Code is trying to extend beyond its system permissions
- System is out of memory
- Memory leaks are causing #9
- Bad library — bug introduced from other code
- Malicious hackers have taken over your computer
List from MakeUseOf that is more hardware-y
- Bad memory or motherboard
- BIOS settings at hardware level
- Corrupt registry
- Incorrect or corrupt drivers
- Hard drive issues
- Hardware conflicts
- Virus
- Power issues
- Overheating
