[GH-ISSUE #2976] Android: thousands of split-tunneling routes trigger ConnectivityManager instability and Galaxy Watch6 Manager crash loop #1362

Open
opened 2026-10-13 20:40:58 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @Shempp on GitHub (Aug 11, 2026).
Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/2976

Describe the bug

On a Samsung Galaxy S23+, AmneziaVPN with a large split-tunneling list creates 2355 routes through tun0 (2388 routes total). After the VPN starts, Galaxy Watch6 Manager repeatedly crashes.

Android logs show:
Large reply transaction of 329240 bytes, interface descriptor android.net.IConnectivityManager and DeadSystemRuntimeException in ConnectivityManager.getLinkProperties() called by Google Wear Companion.

The crash occurs in Samsung/Google software, but Amnezia's unusually large routing table reliably triggers it.

To Reproduce

  1. Import a large Russian IP list for split tunneling.
  2. Source used: https://russia.iplist.opencck.org/ru/
  3. Enable the Amnezia VPN configuration.
  4. Enable automatic VPN startup and reboot the phone.
  5. Open Galaxy Wearable or wait for Watch6 Manager to start.
  6. Observe repeated Watch6 Manager crash dialogs.

During a controlled test:

  • Phone boot: approximately 14:34:57
  • Amnezia VPN started: 14:36:49
  • First crash: 14:37:11
  • Further crashes: 14:37:39, 14:38:14, 14:38:36, 14:38:46 and 14:39:04

Expected behavior

Amnezia should handle or aggregate large split-tunneling lists without causing Android ConnectivityManager instability. If the list is too large, the application should warn the user.

Log files

Android log excerpt:
Large reply transaction of 329240 bytes, interface descriptor android.net.IConnectivityManager

Crash stack:
android.os.DeadSystemRuntimeException: android.os.DeadSystemException
at android.net.ConnectivityManager.getLinkProperties()
at com.google.android.gms.internal.wear_companion...

Routing table:

  • 2388 routes total
  • 2355 routes through tun0

amnezia-watch6-reproduction-log-2026-08-11.txt

Smartphone

  • Device: Samsung Galaxy S23+ (SM-S916B)
  • OS: Android 16 / One UI 8.5
  • AmneziaVPN version: 5.0.0.5

Server

  • OS: Not relevant to reproduction

Additional context

Galaxy Watch6 Manager version: 2.2.13.26071051
Galaxy Wearable version: 2.2.70.26060861
Google Play Services version: 26.29.32

Control tests:

  • No VPN: 32 routes, no crash.
  • v2rayNG VPN: 39 tun0 routes, no crash.
  • AmneziaVPN: 2355 tun0 routes, reproducible crash loop after reboot.

The imported list may have changed since it was downloaded, so the current online list may not be byte-for-byte identical.

Originally created by @Shempp on GitHub (Aug 11, 2026). Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/2976 **Describe the bug** On a Samsung Galaxy S23+, AmneziaVPN with a large split-tunneling list creates 2355 routes through tun0 (2388 routes total). After the VPN starts, Galaxy Watch6 Manager repeatedly crashes. Android logs show: `Large reply transaction of 329240 bytes, interface descriptor android.net.IConnectivityManager` and `DeadSystemRuntimeException` in `ConnectivityManager.getLinkProperties()` called by Google Wear Companion. The crash occurs in Samsung/Google software, but Amnezia's unusually large routing table reliably triggers it. **To Reproduce** 1. Import a large Russian IP list for split tunneling. 2. Source used: https://russia.iplist.opencck.org/ru/ 3. Enable the Amnezia VPN configuration. 4. Enable automatic VPN startup and reboot the phone. 5. Open Galaxy Wearable or wait for Watch6 Manager to start. 6. Observe repeated Watch6 Manager crash dialogs. During a controlled test: - Phone boot: approximately 14:34:57 - Amnezia VPN started: 14:36:49 - First crash: 14:37:11 - Further crashes: 14:37:39, 14:38:14, 14:38:36, 14:38:46 and 14:39:04 **Expected behavior** Amnezia should handle or aggregate large split-tunneling lists without causing Android ConnectivityManager instability. If the list is too large, the application should warn the user. **Log files** Android log excerpt: `Large reply transaction of 329240 bytes, interface descriptor android.net.IConnectivityManager` Crash stack: `android.os.DeadSystemRuntimeException: android.os.DeadSystemException` `at android.net.ConnectivityManager.getLinkProperties()` `at com.google.android.gms.internal.wear_companion...` Routing table: - 2388 routes total - 2355 routes through tun0 [amnezia-watch6-reproduction-log-2026-08-11.txt](https://github.com/user-attachments/files/30933919/amnezia-watch6-reproduction-log-2026-08-11.txt) **Smartphone** - Device: Samsung Galaxy S23+ (SM-S916B) - OS: Android 16 / One UI 8.5 - AmneziaVPN version: 5.0.0.5 **Server** - OS: Not relevant to reproduction **Additional context** Galaxy Watch6 Manager version: 2.2.13.26071051 Galaxy Wearable version: 2.2.70.26060861 Google Play Services version: 26.29.32 Control tests: - No VPN: 32 routes, no crash. - v2rayNG VPN: 39 tun0 routes, no crash. - AmneziaVPN: 2355 tun0 routes, reproducible crash loop after reboot. The imported list may have changed since it was downloaded, so the current online list may not be byte-for-byte identical.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#1362
No description provided.