when you overclock, you can violate the setup and hold time requirements for the electronics.
for example, each bit is represented by a voltage and when a bit changes from a 0 to a 1 the circuit is actually changing the voltage from a low voltage to a higher voltage. if you overclock you change the timing of the sampling of the circuit and the voltage might not have stabilized yet. this results in the bit being read when its voltage is in flux (between what would be considered a zero bit and what would be a 1 bit) when this happens the circuit will just pick a one or zero for the bit. if it is wrong then errors will crop up in the instructions given to the CPU and bad memory addresses will be used and cause drivers to crash. The CPU internal memory controller will catch some of the errors and call a bugcheck 0x124 error to shutdown the CPU.
When you actually look at the circuit and what it is doing you will be surprised that it actually works.
the faster the clock rate the more errors are introduced. The warmer the circuit the more errors you get.
but you still can have a cold circuit and have the errors. Also, when you overclock, there is a lot involved, various connections in the CPU have to have the data transfers synchronized or you get data corruption when cache memory is moved to the cpu for execution. The synchronization is done by applying different voltages via lookup table inside the bios it is based on the clock frequency. It is one reason you need to make sure the BIOS is up to date and your overclocking software is not old. It is very common to have old overclocking software that will apply the wrong voltage for the clock rate.
(happens a lot with the newer low power cpu's, make sure your bios date is newer than the release date of your cpu and generally you will be ok)
sometimes when you get a overclocking bugcheck 0x124
you can look at the memory dump and check the system up timer and dump the error record to see why the system was shut down.
most of the time it will be shutdown by request of the CPU because the CPU memory controller detected a bit error while transferring contents of memory inside the CPU cache memory.
the command in the windows debugger is
!errrec (on the address provided in the bugcheck)
generally if it is a heating problem, you can look at the system up timer and it will be longer than 15 seconds.
if the voltage to the CPU is too low or too high then the up timer will be under 15 seconds.
if you run
!sysinfo smbios
it will dump the BIOS info, you can find the date and compare it to the date that the CPU was released (check google)
often if the BIOS does not know about your CPU, it will show that the current speed of the CPU is faster than the max speed (when the system is not overclocked)
most of the time I just do not overclock, when you overclock you try to find a balance between your machine crashing do to the error rates the overclock introduces and how long you plan to run the machine before it crashes. (length of a gaming session)
but be sure to reboot often because the errors accumulate and when windows detect a error in its data structures it will shutdown the system. I would also turn off the sleep functions since you do not want errors in memory to be saved to your pagefile and get loaded after you reboot.