AdguardTeam / AdguardTeam/AdguardForWindows

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

Offen
#6,186 4 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @AlexandrPkhm Auf GitHub ansehen
Priority: P4
Vorherrschende Sprache
Keine Sprachdaten
Sterne
887
Forks
84
Ø Merge
27 Min.
Gemergte PRs (30 T.)
2

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.