AdguardTeam / AdguardTeam/AdguardForWindows
SockFilter permanently blocks ws2_32!send() — hard hang of Path of Exile 2 (hang dump analysed)
- Lenguaje dominante
- Sin datos de lenguaje
- Estrellas
- 887
- Forks
- 84
- Merge medio
- 27 min
- PR fusionados (30 d)
- 2
Descripción
### Please answer the following questions for yourself before submitting an issue
- [x] Filters were updated before reproducing an issue
- [x] I checked the [knowledge base](https://adguard.com/kb/) and found no answer
- [x] I checked to make sure that this issue has not already been filed
### AdGuard version
8.0.5560.0 (upgraded from 7.22.5282.0 on 2026-08-24)
Driver: `adgnetworksockdrv.sys` 8.0.87.0 — Running, StartType `System`
### Browser version
Chrome 152.0.7977.76 (not involved — this is not a browser issue)
### OS version
Windows 11 Pro, 25H2 (OS build 26200), x64
### Traffic filtering
- [x] yes, I do
### Ad Blocking / Privacy / Social / Annoyances / Security
Default set, unchanged. **Filter lists are not relevant to this report** — the failure happens at the socket layer, below any HTTP(S) or rule processing, and reproduces regardless of what is in the lists.
### Support ticket ID
_Not sent yet — can submit a diagnostic report from the app if you want the service logs._
### Issue Details
SockFilter causes a **permanent** block inside `ws2_32!send()` for the game client Path of Exile 2. This is not a latency spike or a disconnect — the call never returns, and because the game issues it on its main thread, the whole process freezes dead and has to be killed.
Steps to reproduce:
1. AdGuard 8.0.5560.0 with traffic filtering enabled and **no** exclusion for `PathOfExileSteam.exe`.
2. Launch Path of Exile 2 (Steam, app id 2694490). Menus and login screen behave normally.
3. Log in to a character. The area loads and renders fine.
4. ~15 seconds later the process hangs permanently. Window becomes "Not responding".
Reproduced **8 out of 8** attempts.
Adding `PathOfExileSteam.exe` to the exclusion list fixes it completely — the game has been stable since.
AdGuard's own log confirms the process was under App management at the time:
```
"name":"PathOfExileSteam"
"path":"C:\Program Files (x86)\Steam\steamapps\common\Path of Exile 2\PathOfExileSteam.exe"
```
### Expected Behavior
An intercepted `send()` should not be able to block indefinitely. If the filtering layer cannot make progress on a connection, it should fail or time out so the application can recover or disconnect cleanly, rather than parking the caller's thread forever.
Given the goal stated in #5611 ("Add problematic apps to the exclusion list to ensure stable system operation"), Path of Exile 2 is a good candidate for the default exclusion list — it is a mainstream title and the failure is a total hard lock, not a degradation.
### Actual Behavior
The game process freezes completely and permanently.
I captured a full user-mode hang dump of the frozen process (11.5 GB, taken while hung; 114 threads) and analysed it. The **main thread** is blocked in a blocking socket send:
```
ntdll!NtDeviceIoControlFile+0x14
mswsock+0xc414
ws2_32!send+0x15d
PathOfExileSteam+0x2194a49
PathOfExileSteam+0x20e3cf5
PathOfExileSteam+0x100695e
PathOfExileSteam+0x16309e8
PathOfExileSteam+0x15e6ecf
PathOfExileSteam+0x21c088b
PathOfExileSteam+0x16766b9
PathOfExileSteam+0x11cd95
PathOfExileSteam+0x104ec19
PathOfExileSteam+0x104ff32
PathOfExileSteam+0x11cd73
PathOfExileSteam+0x11d69d
PathOfExileSteam+0x11d867
PathOfExileSteam+0x11d902
PathOfExileSteam+0x2ba8832
kernel32!BaseThreadInitThunk+0x17
ntdll!RtlUserThreadStart+0x2c
```
This is the **only** thread in the entire process inside winsock. The remaining 113 are simply waiting behind it:
```
61 ntdll!NtWaitForSingleObject
31 ntdll!ZwWaitForAlertByThreadId
11 ntdll!ZwWaitForWorkViaWorkerFactory
5 ntdll!ZwWaitForMultipleObjects
3 ntdll!ZwDelayExecution
2 ntdll!NtRemoveIoCompletion
1 win32u!NtUserMsgWaitForMultipleObjectsEx
```
`ws2_32!send -> mswsock -> NtDeviceIoControlFile` is the AFD path that SockFilter intercepts.
The game's own watchdog notices and logs (8 times, all on the same day):
```
[CRIT Client] Deadlock detected with timeout 15000ms; no running graph
```
Windows records it as `AppHangB1`, fault bucket `1503973819844159482`, hashed bucket `af6b9db64aac8ab384df3038834c67fa`.
### Additional Information
**Regression window**
```
2026-07-02 last working session of this game. AdGuard 7.22.5282.0 (HTTP/DNS filtering only)
2026-08-24 upgrade to AdGuard 8.0.5560.0 (system-wide network-level filtering / SockFilter)
2026-09-04 first launch since July -> hangs on every single attempt
```
Evidence for the upgrade date: registry `InstallDate 20260824`, plus AdGuard's own settings backup `adguard_settings_7.22.5282.0-24-08-2026-23_07_22.418.zip`. The game itself was also patched in that window (4.5.4 -> 4.5.5), but the hang disappears with AdGuard exclusion alone, on the same game build.
**Ruled out with evidence, before AdGuard was suspected**
- **Not the renderer.** Same hang, same stack on DirectX12 (6 times), DirectX11 (1) and Vulkan (1).
- **Not the GPU driver.** Occurs on NVIDIA 32.0.16.1074 and 32.0.16.1088. No TDR, no `nvlddmkm` events, no WHEA, no bugcheck.
- **Not corrupted game files.** Steam file verification changed nothing.
- **Not stale OS state.** A full reboot changed nothing.
- **No other network intermediary.** No third-party Winsock LSPs, no non-Microsoft `NetAdapterBinding` entries, Windows Defender only, no VPN tunnel up.
**Environment**
| | |
|---|---|
| OS | Windows 11 Pro, build 26200, x64 |
| AdGuard | 8.0.5560.0 (from 7.22.5282.0 on 2026-08-24) |
| AdGuard driver | `adgnetworksockdrv.sys` 8.0.87.0 |
| Application | Path of Exile 2 (Steam 2694490), 4.5.5, build 321346, engine 2.10.0 |
| GPU | RTX 4080 SUPER, driver 32.0.16.1088 |
| NIC | Intel Ethernet Controller I226-V, driver 2.1.5.7 |
| RAM | 61.6 GB |
**Endpoints involved.** The hang always follows the connection to a game instance server plus area load:
```
login mil.login.pathofexile2.com:21270 (also fra.login.pathofexile2.com:21267)
instance 136.69.72.180:21360 / 136.68.94.253:21360
```
**Related SockFilter reports** — same component, different failure modes. This one is a permanent block rather than latency or disconnection, and comes with a dump:
- #5611 — v8 application compatibility (umbrella)
- #5885 — SockFilter breaks Escape From Tarkov
- #6002 — SockFilter + Battlefield 6 disconnections
- #6045 — SockFilter latency spikes (Overwatch / Tarkov)
- #6149 — SockFilter issues with qBittorrent
**Artifacts available on request:** the client log with all 8 timestamped hangs and the watchdog lines, and the hang dump. The full dump is 11.5 GB — I can produce a small thread-stacks-only minidump instead, or submit a diagnostic report from the app with service logs, whichever you prefer.
I have also reported the main-thread blocking `send()` to the game developer separately, since a network stall should not be able to hard-lock their client regardless of what causes it.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.