Bug Check 0x1A: MEMORY_MANAGEMENT
The MEMORY_MANAGEMENT bug check has a value of 0x0000001A. The bug check indicates that a severe memory management error occurred.
Important
This article is for programmers. If you're a Microsoft customer and your computer displays a blue screen error code, see Troubleshoot blue screen errors.
MEMORY_MANAGEMENT parameters
Parameter 1 identifies the exact violation.
Parameter 1 | Cause of error |
---|---|
0x31 | The image relocation fix-up table or code stream has been corrupted. The error probably is a hardware error. |
0x3f | An inpage operation failed with a cyclic redundancy check (CRC) error. Parameter 2 contains the pagefile offset. Parameter 3 contains the page CRC value. Parameter 4 contains the expected CRC value. |
0x403 | The page table and page frame numbers (PFNs) are out of sync. The error probably is a hardware error, especially if parameters 3 and 4 differ by only one bit. |
0x404 | In the process of deleting a system page, an inconsistency between the PFN and the current page table entry (PTE) pointer was found. Parameter 2 is the expected PTE. Parameter 3 is the PTE contents. Parameter 4 is the PFN’s PTE. |
0x411 | A PTE has been corrupted. Parameter 2 is the address of the PTE. |
0x1010 | The caller is unlocking a pageable section that's not currently locked. (This section was either never locked or it's being unlocked twice.) |
0x1233 | A driver tried to map a physical memory page that wasn't locked. This action is illegal because the contents or attributes of the page can change at any time. A bug in the code made the mapping call. Parameter 2 is the PFN of the physical page that the driver attempted to map. |
0x1234 | The caller is trying to lock a nonexistent pageable section. |
0x1235 | The caller is trying to protect an MDL with an invalid mapping. |
0x1236 | The caller specified an MDL that contains an unlocked (or invalid) physical page. Parameter 2 contains a pointer to the MDL. Parameter 3 contains a pointer to the invalid PFN. Parameter 4 contains the invalid PFN value. |
0x1240 | It's illegal for callers to build an MDL for a virtual address range that isn't resident. Parameter 2 is the MDL. Parameter 3 is the PTE pointer. |
0x3300 | During a write action, the referenced virtual address is mistakenly marked as "copy on write". Parameter 2 is the value for FaultingAddress . Parameter 3 is the PTE contents. Parameter 4 indicates the virtual address space type. |
0x3451 | The PTEs of a kernel thread stack that has been swapped out are corrupted. |
0x3453 | Not all the page table pages of an exited process could be deleted because of outstanding references. This error typically indicates corrupted process page table structures. |
0x3470 | A cached kernel stack was corrupted while it was on the free list. This memory corruption indicates a serious problem, and the calling stack might be either a victim or a culprit. Parameter 2 is the virtual address. Parameter 3 is the virtual address cookie. |
0x4477 | A driver tried to write to an unallocated address in the user space of the system process. Parameter 2 contains the address of the attempted write. |
0x5100 | The allocation bitmap is corrupted. The memory manager is about to overwrite a virtual address that was already in use. |
0x5305 | The caller is specifying an invalid pool address (parameter 2) to free. Parameter 2 is the virtual address that's being evaluated. Parameter 3 is the region size. |
0x6001 | The memory store component’s private memory range is corrupted, so it has become inaccessible. Parameter 2 is the returned status. Parameter 3 is the virtual address in the store's private memory range. Parameter 4 is the MDL. |
0x8886 0x8887 |
(Windows 7 and later). Two pages on the standby list that were supposed to have identical page priority values don't have identical page priority values. The differing values are captured in parameter 4. |
0x8888 0x8889 |
Internal memory management structures are corrupted. |
0x888A | Internal memory management structures (likely the PTE or PFN) are corrupted. |
0x9696 | A PFN (parameter 2) was encountered with a corrupted linkage that's no longer connected to its top-level process. This error indicates corrupted PFN structures. |
0x15000 | The caller is either supplying the wrong address or calling this routine in the wrong process context. Both actions are illegal because we can't unsecure a range that we can't find due to this error. Parameter 2 is the virtual address that's being evaluated. |
0x15001 | An error occurred in the process of unsecuring memory that previously was secured. This error might happen if the caller mistakenly invoked MmUnsecureVirtualMemory in the wrong process context. |
0x41202 | In the process of determining the page protection of a non-zero PTE, it was determined that the PTE is corrupted. Parameter 2 is the PTE pointer. Parameter 3 is the PTE contents. Parameter 4 is the virtual address descriptor. |
0x41286 | The caller is trying to free an invalid pool address. |
0x41785 | The working set list is corrupted. |
0x41287 | An illegal page fault occurred while holding working set synchronization. Parameter 2 contains the referenced virtual address. |
0x41790 | A page table page has been corrupted. On a 64-bit version of Windows, parameter 2 contains the address of the PFN for the corrupted page table page. On a 32-bit version of Windows, parameter 2 contains a pointer to the number of used PTEs, and parameter 3 contains the number of used PTEs. |
0x41792 | A corrupted PTE has been detected. Parameter 2 contains the address of the PTE. Parameters 3 and 4 contain the low and high parts of the PTE. |
0x61941 | The paging hierarchy is corrupted. Parameter 2 is a pointer to the virtual address that caused the fault. |
0x61948 | In the process of decrementing the reference counts for an I/O space region, the region's accounting node couldn't be found. Typically, this error means that the argument range was never locked or that it's already been unlocked. Parameter 2 is the base I/O frame. Parameter 3 is the number of pages in the region. Parameter 4 is the specific I/O frame for which a node couldn't be found. |
0x61949 | The IoPageFrameNode value is null. Parameter 2 is PageFrameIndex . |
0x6194A | An error occurred while decrementing the reference counts on I/O space physical pages that are being unmapped. An entry that isn't currently referenced is being dereferenced. Parameters 2 and 3 describe the caller's I/O space range that's being unmapped. Parameter 4 is the I/O space physical page that's expected to be referenced, but which isn't referenced. |
0x03030308 | The range to remove (or truncate) is in use by the loader. It can't be safely removed, so the system must issue a stop code. Parameter 2 is HighestPhysicalPage . |
These parameter 1 values were used in previous versions of Windows.
Parameter 1 | Cause of error |
---|---|
0x777 | The caller is unlocking a system cache address that's not currently locked. (The address was either never mapped or it's being unlocked twice.) |
0x778 | The system is using the last system cache view address instead of preserving it. |
0x780 0x781 |
The PTEs that map the argument system cache view have been corrupted. |
0x1000 | A caller of MmGetSystemAddressForMdl* tried to map a fully cached physical page as non-cached. This action would cause a conflicting hardware translation buffer entry, so it was refused by the operating system. Because the caller specified "bug check on failure" in the requesting Memory Descriptor List (MDL), the system issued a bug check. |
0x1241 | The virtual address for the MDL was unexpectedly asynchronously unmapped during the call to build the MDL. Parameter 2 is the MDL. Parameter 3 is the PTE pointer. |
0x5003 | The working set free list is corrupted. It's probably a hardware error. |
0x5200 | A page on a free pool SLIST has been corrupted. This error might be the result of a write-after-free bug in a driver or an overrun from a previous page. Parameter 2 contains the address of a free pool block. Parameter 4 contains the value that was expected to be at that address. Parameter 3 contains the actual value that was found. |
0x8884 0x8885 |
(Windows 7 and later). Two pages on the standby list that were supposed to have identical page priority values don't have identical page priority values. The differing values are captured in parameter 4. |
0x41201 | In the process of querying a virtual address, inconsistency between the PFN and the current PTE pointer was found. Parameter 2 is the corresponding PTE. Parameter 3 is the PTE contents. Parameter 4 is the virtual address descriptor. |
0x41283 | The working set index encoded in the PTE is corrupted. |
0x41284 | A PTE or the working set list is corrupted. |
0x41793 | A page table page has been corrupted. Parameter 2 contains a pointer to the last processed PTE. Parameter 3 contains the number of non-zero PTEs found. Parameter 4 contains the expected number of non-zero PTEs in the page table. This memory parameter has been deprecated and is no longer available after Windows 10 version 1803. |
0x61940 | A PDE has been unexpectedly invalidated. |
0x61946 | The MDL that's being created is flawed. This error almost always means that the driver calling MmProbeAndLockPages is at fault. Typically, the driver is attempting to create a write MDL when it's being asked to process a paging read. |
0x03030303 | The boot loader is broken. (This value applies only to Intel Itanium machines.) |
Resolution
The !analyze debug extension displays information about the bug check. The information in the debug extension might help you identify the root cause.
You also might find it helpful to run the Windows Memory Diagnostic tool to check for problems that affect physical memory modules.