MemTest86 Technical Information

MemTest86 froze/halted in the middle of test. Is there something wrong with my system?

System freeze/halt can be the result of several possible causes:

  • Bug in UEFI BIOS firmware (Most common cause)
  • Bad RAM & other hardware
  • Bad memory map configuration

UEFI BIOS Bugs

If the freeze occurs in MemTest86 but the system runs normally otherwise, the problem is likely with the UEFI firmware. The most common issue is when running MemTest86 using multiple CPU cores (default behaviour). There is a forum post that tracks known motherboard/BIOSes with problems running using multiple CPU cores. If you believe this issue is related to the UEFI BIOS, please send a copy of the debug log to PassMark Software. This type of bug tends to be very repeatable (not random)

Another BIOS bug we have seen is some old Dell machines have a 32bit addressing bug that prevents testing more than 4GB of RAM. In this case testing will freeze early on during Test 0 (the address test), while test in the 0x100000000 (4GB) memory range. To partially work around this issue you can limit the maximum address to test to below 0x100000000. This might mean a lot of RAM doesn’t get tested however. Or contact the motherboard vendor and ask for updated BIOS.

Bad RAM and other Hardware

MemTest86 needs at least some functional RAM to boot and run. In cases where the RAM errors are very frequent (or you get unlucky) MemTest86 might freeze, lockup or crash, somewhat at random. If the system also freezes when booting into the operating system, the problem is likely hardware related. So replacing the RAM is a first option. If the problem persists, the only option is to identify and replace parts (motherboard, CPU, peripherals) until the failure is corrected.

Bad Peripherals Configuration

The BIOS in a computer maintains a memory map of available free memory and used memory. In old style BIOSs this was sometimes called the E820 map.

UEFI provides a function called GetMemoryMap() to get the list. The map provides a list of available memory ranges that can be tested by MemTest86. Unavailable ranges are used by other hardware in the system using a process called memory mapped.

Sometimes BIOS gets is wrong and claims a memory range is available when it is in fact already in use some other piece of hardware. This results in two processes writing to the same memory, corrupting each other’s data. Sometimes this can cause apparent memory errors during testing, on other occasions it can cause a crash.

MemTest86 Memory Map.