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 maybe with the UEFI BIOS firmware. UEFI is still relatively new and there are numerous known bugs with specfic systems.

Bug #1 - Multithread support. 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)

Bug #2 - 32bit support only. 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. Note that this can occur on CPUs that have full 64bit support. It is a just a BIOS issue.

Bug #3 - Supermicro motherboards. Supermicro motherboards have a collection of bugs. Some have the multi-threading issue detailed above. Others systems have a buggy Supermicro PCIe network card based on Intel X710 with 4 * SFP+ ports. Removing the network card fixes the problem. Other systems have a problem in the "SMCI Redfish" software that Supermicro supplies with the board. Redfish seems to run in the background in BIOS once the machine boots (and is driven by interupts). The Redfish software then appears to incorrectly use RAM that was already allocated to other applications and eventually locks up the system.

Bug #4 - Apple BIOS update (29 Oct 2020). Apple released a BIOS update in Oct 2020 that introduced a new UEFI multiprocessor firmware bug. Calling the UEFI functions like EFI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS causes a EFI Panic (a crash) in firmware. Apple are aware of the problem and it should be fixed in a early 2021 update.

Bug #5 - Microsoft Surface laptops can't change screen resolution. Some models of the Microsoft Surface product line fail to change video resolution from UEFI BIOS. This results in a black screen that can look like a crash. In fact MemTest86 continues to run, but you can't see anything on the screen. This can be confirmed by looking a the debug log file.

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.