microsoft / microsoft/WSL

Non-paged Pool Memory Leak (NetIO.sys) Causing OOM When Using WSL2 / Virtual Machine Platform

Open
#13,884 8 comments 5 reactions 0 assignees View on GitHub
network question
Dominant language
C++
Stars
33.7k
Forks
1.8k
Avg merge
3d 17h
Merged PRs (30d)
116

Description

### Windows Version

Windows: 10.0.26200.7462

### WSL Version

2.7.0.0

### Are you using WSL 1 or WSL 2?

- [x] WSL 2
- [ ] WSL 1

### Kernel Version

6.6.114.1-1

### Distro Version

Ubuntu 24.04

### Other Software

_No response_

### Repro Steps

Start Windows normally with Windows Subsystem for Linux (WSL2) and Virtual Machine Platform enabled.

Launch WSL2 (any distribution, e.g. Ubuntu).

Keep WSL2 running in the background and use the system normally (network activity present, e.g. internet access, package downloads, development tools, etc.).

Over time, observe system memory usage in Task Manager or Resource Monitor.

Notice that Non-paged Pool memory continuously increases and is not released.

Use PoolMon to analyze non-paged pool usage.

Observe that the dominant and continuously growing pool tag is associated with NetIO.sys.

Eventually, the system runs into Out Of Memory (OOM) and becomes unstable or unusable.

Rebooting the system is the only way to fully recover memory.

Workaround verification:

Disable Windows Subsystem for Linux and Virtual Machine Platform.

Reboot the system.

Confirm that non-paged pool memory no longer grows abnormally.

### Expected Behavior

Non-paged Pool memory usage should remain stable over time.

Using WSL2 should not cause unbounded growth of kernel non-paged memory.

Network-related kernel components (such as NetIO.sys) should properly release allocated memory.

The system should remain stable without requiring a reboot.

### Actual Behavior

Non-paged Pool memory usage continuously grows while WSL2 / Virtual Machine Platform is enabled.

Memory is not released, even when WSL2 processes are idle.

PoolMon shows excessive allocation associated with NetIO.sys.

The system eventually encounters Out Of Memory (OOM) conditions.

The only reliable recovery is a full system reboot.

### Diagnostic Logs

_No response_

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue with WSL2 and Virtual Machine Platform enabled, then monitor non-paged pool usage with Task Manager or Resource Monitor and identify the growing allocation with PoolMon. Done means the NetIO.sys-associated growth is understood and non-paged pool memory remains stable without requiring a reboot.

Written by the indexing model from the issue text.

Assessment

Domain
networking, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.