MemTest86 Technical Information

Known Issues

MemTest86 depends on the services provided by the UEFI firmware, which include mouse/keyboard support, multiprocessor services, file input/output, and PCI device management. Because the services that are provided by the firmware are developed individually by the motherboard manufacturers, there may be functional differences than can limit or prevent the proper operation of MemTest86. Some of these issues are highlighted below:

  • Some UEFI implementations do not provide full mouse support, preventing the use of the mouse in MemTest86. If this is the case, use the keyboard or try updating to a new firmware build.
  • Multiple CPU testing may not be available due to limited or non-functional implementations of Multiprocessor services provided by UEFI, especially for older firmware. This may cause a reduced number of processors available for testing, or even program freeze when attempting to run on other processors. If this is the case, run in single CPU mode or try updating to a new firmware build. There is a blacklist.cfg file that contains a list of baseboards that are known to have issues running MemTest86. Adding a baseboard to the list may allow MemTest86 to run, albeit with limited functionality. See Blacklist File (blacklist.cfg) for details on how to use the file.
  • A very small number of machines have problems with keyboard support in BIOS. There are two keyboard types, USB and PS2 (plus USB legacy emulation of PS2). For the keyboard to work in MemTest86 and within BIOS, the UEFI BIOS needs to support the type of keyboard that is connected.
  • Some UEFI implementations do not support dynamic adjustment of the screen resolution. This can lead to display issues such as black screens on certain devices. If this is the case, fixed screen resolution mode can be enabled by adding the devices baseboard to the Blacklist File (blacklist.cfg).
  • An issue has been detected with some ASUS machines with optical drives, where MemTest86 is unable to boot successfully. This is possibly a UEFI firmware bug, when detecting the file system of a CD media during boot. To resolve the issue, remove CD media or disconnect the optical drive. Further details in this forum post..

MemTest86 is also inherently limited by the UEFI environment and as such, gives rise to the following limitations:

  • MemTest86 USB flash drives cannot be read in Windows XP (32-bit) due to its lack of support of GPTdisks
  • MemTest86 cannot remap itself to different portions of memory in order to run tests in the section of memory it was occupying.
  • Dual UEFI entries may be present in UEFI BIOS as boot devices. There is no difference in selecting either entry. This is due to a workaround that allows MemTest86 USB flash drives to be accessible in Windows.

Blacklist File (blacklist.cfg)

There is a file (blacklist.cfg) that contains a list of baseboards that are known to have firmware issues that prevent MemTest86 from functioning properly. This file is loaded on startup and the list is scanned to see if there is a match with the system baseboard. If there is a match, the MemTest86 functionality shall be restricted accordingly. Without imposing the restriction, there may be a chance that MemTest86 may not run at all. The following is a snip-bit of the blacklist.cfg file:

"Mac-F42C88C8",ALL,EXACT,RESTRICT_STARTUP
"80AF",ALL,EXACT,RESTRICT_MP
"Z97MX-Gaming 5",ALL,EXACT,RESTRICT_MP
"Z170MX-Gaming 5",ALL,EXACT,RESTRICT_MP

Each blacklisted baseboard is stored on a separate line with the following format:

[baseboard],[BIOS version],[exact|partial match],[restriction flags]

The baseboard and BIOS version for your device can be obtained from the log file created on the bootable device.

where

  • [baseboard] is the case-sensitive baseboard string in double quotes
  • [bios version] is the first BIOS version (string in double quotes) that no longer exhibits the issue. If no fix is available, specify ALL
  • [exact|partial match] determines whether exact or partial matching is used on [baseboard string].
  • [restriction flags] determines the restriction policy to impose if there is a match. This can be one of the following values:
    • RESTRICT_STARTUP - Display a warning message before MemTest86 boots
    • RESTRICT_MP - Do not perform the multiprocessor test during startup, and set the default CPU mode to SINGLE
    • DISABLE_MP - Completely disable multiprocessor support, restricting the CPU mode to SINGLE only
    • DISABLE_CONCTRL - Disable console control protocol, which may be needed for some older systems (eg. iMac 7.1)
    • FIXED_SCREENRES - Do not modify the default screen resolution, which is known to cause issues on some Lenovo and Surface Book systems
    • RESTRICT_ADDR - Set the lower address limit to 0x100000 by default, which may be needed for some Mac systems (eg. Late 2013 27" iMac)
    • TEST12_SINGLECPU - Run Test 12 in SINGLE CPU Mode, which may be necessary to workaround CPU threads hanging in PARALLEL mode
    • DISABLE_LANG - Disable language support and font installation, which is known to cause issues on some Dell systems