New WSL sessions hang under memory pressure with vmbus_alloc_ring allocation failure
AI disclosure
This report was drafted and filed with assistance from OpenAI Codex, based on local command output and logs from the affected machine.
Summary
WSL semi-routinely gets into a state where existing WSL shells continue to work, but new WSL sessions and Windows interop hang. This appears to correlate with memory pressure and a kernel vmbus_alloc_ring allocation failure.
This looks similar to #11612. It has similar outer symptoms to #12991, but Docker Desktop is already newer than the Docker Resource Saver fix discussed there and in docker/for-win#14656.
Environment
- WSL 2
- Distro: Ubuntu 24.04.3 LTS
- Kernel:
6.18.33.1-microsoft-standard-WSL2 .wslconfig:memory=52GB- Docker Desktop:
4.44.3 - Docker Engine / CLI:
28.3.2 - Docker Compose:
v2.39.1-desktop.1 - Docker Desktop WSL bootstrap:
098d711f2ff00f0a1c4d69da1f9d6d2d - Windows / WSL app version: not collected while wedged because
wsl.exe --statusandwsl.exe -l -vhang
Behavior
After some time under normal dev workload, apparently under memory pressure:
- existing WSL shells still run commands
- opening new WSL terminals hangs
- launching
wsl.exefrom WSL hangs - launching Windows interop commands such as
cmd.exe /c echo cmd-okfrom WSL hangs - recovery requires
wsl --shutdownor restarting WSL services / rebooting
Relevant local checks
$ timeout 8 bash -lic 'printf shell-ok'
shell-ok
$ timeout 12 /mnt/c/Windows/System32/wsl.exe -d Ubuntu --exec /bin/bash -lc 'printf wsl-exec-ok'
<3>WSL (...) ERROR: UtilAcceptVsock:273: accept4 failed 110
$ timeout 10 /mnt/c/Windows/System32/wsl.exe --status
# timed out, no output
$ timeout 10 /mnt/c/Windows/System32/wsl.exe -l -v
# timed out, no output
$ timeout 8 /mnt/c/Windows/System32/cmd.exe /c echo cmd-ok
# timed out, no outputJournal excerpts
Repeated session leader failures:
Jun 12 10:04:35 ... WSL (849628 - SessionLeader) ERROR: UtilAcceptVsock:273: accept4 failed 110
Jun 12 10:04:35 ... WSL (849628 - SessionLeader) ERROR: operator():1263: UtilAcceptVsock() failed for session leader 110
Jun 12 10:04:44 ... WSL (849732 - SessionLeader) ERROR: UtilAcceptVsock:273: accept4 failed 110
Jun 12 10:04:44 ... WSL (849732 - SessionLeader) ERROR: operator():1263: UtilAcceptVsock() failed for session leader 110
Jun 12 15:47:51 ... WSL (1042443 - SessionLeader) ERROR: UtilAcceptVsock:273: accept4 failed 110
Jun 12 15:47:51 ... WSL (1042443 - SessionLeader) ERROR: operator():1263: UtilAcceptVsock() failed for session leader 110
Jun 12 17:10:40 ... WSL (1059662 - SessionLeader) ERROR: UtilAcceptVsock:273: accept4 failed 110
Jun 12 17:10:40 ... WSL (1059662 - SessionLeader) ERROR: operator():1263: UtilAcceptVsock() failed for session leader 110Earlier memory / Hyper-V socket allocation failure:
Jun 11 17:40:07 ... kernel: kworker/0:0: page allocation failure: order:7, mode:0xdc0(GFP_KERNEL|__GFP_ZERO), nodemask=(null),cpuset=/,mems_allowed=0
Jun 11 17:40:07 ... kernel: Workqueue: hv_pri_chan vmbus_add_channel_work
Jun 11 17:40:07 ... kernel: vmbus_alloc_ring+0x78/0xd0
Jun 11 17:40:07 ... kernel: vmbus_open+0x29/0x80
Jun 11 17:40:07 ... kernel: hvs_probe+0x1f4/0x4c0
Jun 11 17:40:07 ... kernel: vmbus_probe+0x42/0xa0
Jun 11 17:40:07 ... kernel: vmbus_device_register+0x87/0x130
Jun 11 17:40:07 ... kernel: vmbus_add_channel_work+0x146/0x1d0Mem-Info from the same allocation failure showed heavy pressure near the WSL memory cap:
active_anon:114025 inactive_anon:11507801 isolated_anon:32
active_file:1031583 inactive_file:146747 isolated_file:0
free:60986 free_pcp:1372 free_cma:0
Node 0 active_anon:456100kB inactive_anon:46031204kB active_file:4126332kB inactive_file:586988kB
Node 0 Normal free:46896kB min:41688kB low:91140kB high:140592kB
Node 0 Normal: ... 0*512kB 0*1024kB 0*2048kB 0*4096kB = 44724kB
Free swap = 12716576kB
Total swap = 13631488kBThe same allocation failure repeated at least two more times:
Jun 11 17:41:42 ... kernel: kworker/0:3: page allocation failure: order:7, mode:0xdc0(GFP_KERNEL|__GFP_ZERO)
Jun 11 17:41:42 ... kernel: Workqueue: hv_pri_chan vmbus_add_channel_work
Jun 11 17:41:42 ... kernel: vmbus_alloc_ring+0x78/0xd0
Jun 11 17:41:58 ... kernel: kworker/0:2: page allocation failure: order:7, mode:0xdc0(GFP_KERNEL|__GFP_ZERO)
Jun 11 17:41:58 ... kernel: Workqueue: hv_pri_chan vmbus_add_channel_work
Jun 11 17:41:58 ... kernel: vmbus_alloc_ring+0x78/0xd0Notes
Docker Desktop is installed and WSL integration is active, but the installed Docker Desktop version is 4.44.3, newer than the 4.42.1 fix referenced from #12991 / docker/for-win#14656. This may still be Docker-triggered, but the local kernel evidence looks closer to #11612: vmbus_alloc_ring cannot allocate under memory pressure, then WSL session creation / interop starts timing out.
Source: microsoft/WSL