AdguardTeam / AdguardTeam/AdguardForWindows

SockFilter permanently blocks ws2_32!send() — hard hang of Path of Exile 2 (hang dump analysed)

Aperta
#6,186 4 commenti 0 reazioni 1 assegnatario Rivendicata da @AlexandrPkhm Vedi su GitHub
Priority: P4
Lingua principale
Nessun dato sulla lingua
Stelle
887
Fork
84
Merge medio
27m
PR unite (30g)
2

Descrizione

### 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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.