Org-wide kernel memory leak in luafv.sys (Luaf tag) after KB5127648, Windows 11 25H2/26H2

Roy Rojas 5 Reputation points
2026-11-04T16:23:35.24+00:00

Since the October 2026 cumulative update KB5127648 was installed, our Windows 11 machines leak kernel paged pool memory until they run out of RAM. They become slow, then freeze. A reboot frees the memory, but the leak starts again right away.

On each machine the problem started the same day the update was installed, and it did not happen before.

This is not limited to a few machines. Every Windows 11 machine we have checked in the organization shows the same leak, on both 25H2 and 26H2, with different hardware, roles and software. Machines with little RAM freeze within a day or two. Machines with a lot of RAM hide it longer, but the Luaf tag still grows without limit.

Environment

  • Windows 11 25H2, build 26200.9711. Only the monthly cumulative update was applied, no feature upgrade.
  • 4 affected machines (16 GB RAM, one with 8 GB). They are point-of-sale machines running IIS, SQL Server 2022 Express, a third-party EDR agent (file system minifilter) and a remote support agent.

Pool tags on one machine, 26 hours after reboot (read with NtQuerySystemInformation, SystemPoolTagInformation)

  • Paged pool 14.3 GB, nonpaged pool 5.1 GB. Committed memory 26.5 GB on 16 GB RAM.
  • Paged: Luaf 5.3 GB (luafv.sys), FMfn 2.0 GB (fltmgr.sys), NtfE 2.0 GB, NtfC 1.1 GB (ntfs.sys), IoNm, NtFd, NtFI 0.7 GB each.
  • Nonpaged: File 2.0 GB, FMfc 1.0 GB (fltmgr.sys), IoFE 0.8 GB.
  • All user-mode processes together use only about 6 GB private memory, and handle counts are low.
  • luafv.sys file date matches the KB5127648 install time.

On a second machine, 4.8 hours after reboot, Luaf is already the largest paged tag (701 MB), growing about 150 MB/hour.

On an office laptop (Windows 11 26H2, build 26300.9818, 128 GB RAM, no point-of-sale software), luafv.sys was updated on Oct 29.

After 78 hours, Luaf is at 2.0 GB (FMfn 1.6 GB, File 1.0 GB). It grows more slowly, but it is the same leak.

Timeline

  • Machines 1 and 2: KB5127648 installed Oct 23. Memory problems start Oct 23.
  • Machine 3: KB5127648 installed Oct 27. Problems start Oct 27.
  • Machine 4 (8 GB RAM): patched Oct 27. From then on, SQL Server logs error 701 (insufficient system memory), and Windows free memory dropped to a few MB.

UAC file virtualization

  • EnableVirtualization = 1 (default). luafv is running.
  • Only one process has virtualization enabled, and VirtualStore holds only 3 old files.
  • So no application seems to rely on virtualization. The leak appears to happen in the luafv filter on ordinary file opens.

What we plan to try

  • EnableVirtualization = 0 plus a reboot (and disabling the luafv service if it still loads), then measure Luaf at 2, 6 and 24 hours.
  • A daily scheduled reboot until a fix is available.

Questions

  1. Is this a known issue with luafv.sys (or Filter Manager) in KB5127648?
  2. Is a fix planned, for example in the November 2026 cumulative update?
  3. Is disabling UAC file virtualization a safe and supported workaround in the meantime?
  4. Since this affects every Windows 11 machine we have checked, is anyone else seeing the Luaf tag grow after this update?
Windows for home | Windows 11 | Windows update
0 comments No comments

4 answers

Sort by: Most helpful
  1. Roy Rojas 5 Reputation points
    2026-11-09T21:28:02.7933333+00:00

    Workaround that stopped the Luaf (luafv.sys) leak: disable UAC file virtualization

    We found a workaround that stops the Luaf paged pool leak completely. We disable UAC file and registry virtualization, so the luafv filter driver no longer loads at boot. UAC itself stays enabled, and only the legacy "VirtualStore" redirection is turned off.

    Results

    • On a test machine (build 26200.9550), Luaf dropped to 0 after the change and reboot. Paged pool stayed at about 300–460 MB over more than 20 hours, compared with several GB per day before.
    • A second machine (build 26200.9711, 8 GB RAM) reached 434 MB of Luaf within 3 hours before the change. After the change it stayed clean, and SQL Server memory waits dropped to about 0.
    • The setting survives later reboots.

    What we learned about the cause

    • Machines with the original luafv.sys 10.0.26100.1 do not leak, even with virtualization on.
    • luafv.sys 10.0.26100.8875 (build 26200.9550 and later) leaks, and so does 10.0.26100.9818 (26H2, build 26300.9818). The leak is still present in the newest version we have seen.
    • So the leak is not caused only by KB5127648. Uninstalling KB5127648 does not fix it, because the leaking luafv.sys came in with an earlier cumulative update.

    What we learned about the cause

    • Machines with the original luafv.sys 10.0.26100.1 do not leak, even with virtualization on.
    • luafv.sys 10.0.26100.8875 (build 26200.9550 and later) leaks, and so does 10.0.26100.9818 (26H2, build 26300.9818). The leak is still present in the newest version we have seen.
    • So the leak is not caused only by KB5127648. Uninstalling KB5127648 does not fix it, because the leaking luafv.sys came in with an earlier cumulative update.

    Script (run in an elevated PowerShell, then reboot)

    # Workaround for the Luaf (luafv.sys) kernel paged pool leak - Step 1

    # Turns off UAC file and registry virtualization (EnableVirtualization = 0). UAC itself

    # A reboot is required afterwards. To undo: set EnableVirtualization back to 1 and reboot.

    # Usage (elevated PowerShell): powershell -ExecutionPolicy Bypass -File .\Luaf-Workaround-Step1.ps1

    # Writes a log to C:\ProgramData\LuafWorkaround\

    cipal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {

    Write-Host 'Run this script as Administrator.' -ForegroundColor Red; exit 1

    }

    $folder = Join-Path $env:ProgramData 'LuafWorkaround'

    New-Item -ItemType Directory -Path $folder -Force | Out-Null

    $log = Join-Path $folder ("Step1_{0}_{1}.txt" -f $env:COMPUTERNAME, (Get-Date -Format 'yyyyMMdd_HHmm'))

    $key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'

    $nt = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'

    $drv = (Get-Item "$env:SystemRoot\System32\drivers\luafv.sys").VersionInfo

    & {

    "Computer: $env:COMPUTERNAME Date: $(Get-Date) Step 1"

    "Windows build: $($nt.CurrentBuild).$($nt.UBR) luafv.sys: {0}.{1}.{2}.{3}" -f $drv.FileMajorPart, $drv.FileMinorPart, $drv.FileBuildPart, $drv.FilePrivatePart

    "Before: EnableVirtualization = " + (Get-ItemProperty $key -Name EnableVirtualizatioue).EnableVirtualization +

    " luafv Start = " + (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\luafv').Start

    Set-ItemProperty -Path $key -Name EnableVirtualization -Value 0 -Type DWord

    "After: EnableVirtualization = " + (Get-ItemProperty $key -Name EnableVirtualization).EnableVirtualization

    ""

    "DONE. Reboot now (shutdown /r /t 0). After the reboot, check that luafv is STOPPED: sc.exe query luafv"

    } | Tee-Object -FilePath $log

    "`nLog saved to: $log"

    After the reboot

    1. Run sc.exe query luafv. It should show STOPPED. On all our machines, this setting alone was enough.
    2. If it still shows RUNNING, run sc.exe config luafv start= disabled and reboot again.
    3. Check the Luaf tag a few hours after boot, for example with poolmon from the WDK. It should stay at 0 or close to 0.

    To undo: set EnableVirtualization = 1, run sc.exe config luafv start= auto, and reboot.

    This is a workaround until Microsoft ships a fixed luafv.sys. If anyone from Microsoft can confirm that it is supported, that would help.

    Was this answer helpful?

    1 person found this answer helpful.

  2. Neil D 34,755 Reputation points Volunteer Moderator
    2026-11-10T14:33:59.12+00:00

    Something like this needs reporting in the Feedback Hub in windows.

    The development team can then test it out.

    Was this answer helpful?

    0 comments No comments

  3. Deleted

    This answer has been deleted due to a violation of our Code of Conduct. The answer was manually reported or identified through automated detection before action was taken. Please refer to our Code of Conduct for more information.


    Comments have been turned off. Learn more

  4. Carl-L 24,905 Reputation points Microsoft External Staff Moderator
    2026-11-05T07:17:17.2+00:00

    Hello Roy Rojas,

    Welcome to Microsoft Q&A forum.

    I actually did see other users with the same issue, so you are probably not alone here. However, I haven't found any article about it being a known issue yet. So I don't think that a fix was planned for this. Disabling UAC file virtualization, while not being documented as a supported workaround, but it is quite reasonable and probably safe, so you can keep using this workaround for now. However, I'd suggest remove the KB update for available devices.

    In this case, please submit the issue directly to the Windows engineering team using the Feedback Hub. This will let them know about the problem and addressing it in future updates.

    Thank you for your understanding.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.