0x00000109 CRITICAL_STRUCTURE_CORRUPTION

On 64-bit Windows, patching the kernel is not allowed. A protection mechanism periodically verifies that critical kernel code and data structures are unmodified, and when it finds one that has been changed it stops the machine immediately. That check cannot distinguish a driver deliberately patching the kernel from a memory fault flipping a bit in it - which is why this stop code has two completely different explanations.

Updated 2026-07-28Stop errorAlso written: 0x109, CRITICAL STRUCTURE CORRUPTION, critical_structure_corruption, patchguard bsod

What you are looking at

:(

Your PC ran into a problem and needs to restart.

Stop code: CRITICAL_STRUCTURE_CORRUPTION

In Event Viewer the matching entries look like this:

Log Name:      System
Source:        BugCheck
Event ID:      1001
Level:         Error

The computer has rebooted from a bugcheck.  The bugcheck was: 0x00000109 (0xa3a01f58f4a1b2c3, 0xb3b72be3f5c2d1e4, 0xfffff8036c1a5180, 0x0000000000000004).

What the error actually means

Historically, security software and rootkits alike worked by patching the kernel - hooking system service tables, modifying dispatch routines, rewriting function prologues. It was effective and it made the operating system impossible to secure or to keep stable.

From Windows Server 2003 SP1 onward on x64, Microsoft prohibited it. The kernel may only be patched through authorised Microsoft-originated hot patches. A protection mechanism periodically checks that critical structures still match what they should be, and bugchecks if they do not.

So this stop code means something changed kernel code or data that had no business changing. Microsoft documents three causes: a driver modifying critical kernel code or data, a developer setting a kernel breakpoint without a debugger attached at boot, or hardware corruption - memory that failed while holding kernel code.

For an ordinary user, that reduces to two: software that patches the kernel, or bad RAM.

Reading the parameters

Unusually, parameters 1 to 3 are all reserved. Everything is in parameter 4, which names the structure that was found modified. Around thirty-five values are documented; these are the ones worth recognising.

ParameterWhat it holds
4 = 0x0 or 0x20A generic data region. The least specific values and the hardest to act on.
4 = 0x1A function modification - kernel code itself was altered. Strongly suggests something patching the kernel rather than a random bit flip.
4 = 0x2A processor interrupt dispatch table (IDT). Classic hooking target.
4 = 0x3A processor global descriptor table (GDT).
4 = 0x4, 0x5, 0x1A, 0x1BProcess list corruption, types 1 through 4. Frequently seen and often memory-related.
4 = 0x7A critical MSR modification - a model-specific register was changed. Overclocking and tuning utilities write MSRs, which makes this one worth noting if the machine is tuned.
4 = 0xAModification of a system service function - the historic hooking technique that PatchGuard was built to stop.
4 = 0xD or 0xEModification of an import table, or of a session import table. Another classic hooking approach.
4 = 0x19Loaded module list modification.
4 = 0x21 or 0x22A page hash mismatch. The contents of a page no longer match its expected hash - which is exactly what a memory fault produces, and a strong pointer toward hardware.
4 = 0x27, 0x28, 0x29, 0x101Pool corruption, types 1 to 3 and general. Overlaps with the territory of BAD_POOL_HEADER.
4 = 0x102Modification of win32k.sys - the graphics and window management kernel component.

What actually triggers it

Two broad families, and parameter 4 helps tell them apart.

CauseHow oftenDetail
Anti-cheat and game protection softwareCommonKernel-level anti-cheat operates in exactly the territory this protection guards. Conflicts between two anti-cheat drivers, or between anti-cheat and a Windows update, produce this reliably. If the crashes cluster around launching a particular game, this is where to look.
Third-party security softwareCommonOlder or poorly maintained anti-virus products still attempt kernel hooking, and some virtualisation-based security tools sit close enough to trigger it.
Failing RAMCommonMicrosoft names hardware corruption directly - kernel code or data stored in memory that failed. A bit flip in a protected region is indistinguishable from deliberate modification. Page hash mismatch values are particularly suggestive of this.
Unstable overclock, undervolt or memory profileOccasionalCorruption in transit rather than in storage, with the same result. Tuning utilities also write MSRs directly, which can trigger the critical MSR modification value on its own.
Cheating and modification toolsOccasionalWorth stating plainly since it is a genuine cause: software designed to modify a running game or the kernel is doing precisely what this mechanism exists to stop. So are some older driver-patching utilities and unsigned driver loaders.
RootkitsRareThe original reason the protection exists. Rare on a modern, patched system, but a scan is reasonable diligence given what the stop code describes.

Narrowing it down

Parameter 4 and timing between them narrow this quickly.

Read parameter 4

Take it from the bugcheck event or from !analyze -v. It is the only parameter carrying information.

What it tells you

Values describing modification of code, functions, import tables or system service functions point at software patching the kernel. Values describing corruption - page hash mismatches, process list corruption, pool corruption - are more consistent with memory faults. It is a tendency rather than a rule, but it is the best signal available.

Check what the crashes correlate with

Note whether they cluster around launching a specific game, starting particular software, or happen with no pattern at all.

What it tells you

A tight correlation with one application - especially a game with kernel anti-cheat - identifies the cause without further work. No pattern at all leans toward hardware.

Inventory what runs at kernel level

List third-party kernel drivers currently loaded:

Get-CimInstance Win32_SystemDriver |
  Where-Object { $_.State -eq 'Running' -and $_.PathName -notmatch 'system32\\(drivers\\)?[a-z]+\.sys' } |
  Select-Object Name, PathName |
  Sort-Object Name |
  Format-Table -AutoSize

Also check Get-Service for anti-cheat services - EasyAntiCheat, BattlEye, Vanguard and similar.

What it tells you

Two kernel-level anti-cheat systems installed simultaneously is a recognised source of conflict. So is anti-cheat alongside aggressive third-party anti-virus.

Test memory before concluding it is software

Disable XMP or EXPO and run MemTest86 from USB for at least four passes.

What it tells you

Microsoft lists hardware corruption as one of only three causes, so this is not a formality. Errors end the investigation. A clean run at stock lets you pursue the software angle with confidence.

Fixes, cheapest first

Which comes first depends on whether parameter 4 and the timing point at software or hardware.

  1. Remove or update anti-cheat software

    Effort: 30 minutes · Risk: Low

    If the crashes correlate with a game, uninstall its anti-cheat component and reinstall it fresh - these ship as separate installable services and can be repaired independently of the game.

    1. Check Programs and Features for EasyAntiCheat, BattlEye, Vanguard and similar entries.
    2. Uninstall the one belonging to the game that triggers the crashes.
    3. Reinstall it from the game's own installation folder, or verify the game files through its launcher.
    4. If two different anti-cheat systems are installed, remove the one for a game you are not currently playing.
  2. Remove third-party security software

    Effort: 20 minutes · Risk: Low

    Uninstall third-party anti-virus using the vendor's dedicated removal tool and run on Windows Defender for a few days. Older products that still hook kernel structures are a direct cause here.

  3. Test and stabilise memory

    Effort: Overnight · Risk: None

    Disable XMP or EXPO, then run MemTest86 from USB for at least four passes. If errors appear, test each module individually in the same slot. See the memory testing guide.

  4. Return the machine to stock

    Effort: 10 minutes · Risk: Low

    Clear any CPU overclock, undervolt, curve optimiser offset and memory profile. Also uninstall tuning utilities rather than just disabling them - Ryzen Master, Intel XTU, ThrottleStop and vendor overclocking software write MSRs directly, which can trigger the critical MSR modification value by itself.

  5. Remove kernel-patching utilities

    Effort: 20 minutes · Risk: Low

    Uninstall anything that loads unsigned drivers, patches system files, or modifies running processes - including older system tweaking utilities, driver signature enforcement bypasses, and game modification tools. These do exactly what this protection exists to prevent.

  6. Verify system files and scan for malware

    Effort: 1 hour · Risk: Low

    Run sfc /scannow, then DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow again. Follow with a Microsoft Defender Offline scan, which runs before Windows loads and can see things a normal scan cannot.

    Given that the mechanism exists to catch kernel modification, a scan is proportionate diligence rather than paranoia - though a driver conflict remains far more likely than a rootkit.

When it is the hardware, not Windows

Signals that memory rather than software is modifying the protected structures:

The last one is close to decisive. If every anti-cheat, security product and tuning utility has been removed, the machine is at stock settings, and it still reports critical structures modified, then nothing in software is doing the modifying. At that point memory is the remaining explanation and it should test as such.

Frequently asked

Does this mean I have a rootkit?

Almost certainly not, despite what the mechanism was built for. In practice the overwhelming majority of these come from legitimate kernel-level software - anti-cheat and security products - or from failing memory. Run an offline scan as reasonable diligence, but do not let the alarming framing send you down that path first. Check what kernel software is installed and test the RAM.

It only happens when I play one specific game. Is the game at fault?

The game's anti-cheat driver is the likely trigger, though not necessarily the thing that is broken. Anti-cheat operates in exactly the territory this protection guards, and conflicts arise between two anti-cheat systems, or between anti-cheat and third-party anti-virus, or after a Windows update changes something underneath. Reinstalling the anti-cheat component and removing any other kernel-level security software usually resolves it.

Why is parameter 4 the only useful one?

Because the protection mechanism deliberately reveals little about itself. Parameters 1 to 3 are documented as reserved. If it published exactly what it checks and where, that information would be immediately useful to anyone trying to evade it - so the bugcheck reports the category of structure that failed verification and nothing more.

Can I disable the protection so it stops crashing?

No, and the methods that claim to are worse than the problem - they generally involve disabling driver signature enforcement or running in test signing mode, which removes protections and does not stop whatever is modifying the kernel. The bugcheck is not the fault; it is the detection. Something is genuinely altering critical kernel structures, and the answer is to find out what.