Non-paged Pool Memory Leak (NetIO.sys) Causing OOM When Using WSL2 / Virtual Machine Platform
- 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
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