You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use Android 9 or Q beta (master branch required as Enhancements for Android Q beta #2161 should have fixed this for Android Q by using new non-blocking APIs, but still reproducible on Android 9); (I have not tried to reproduce this on Android Q yet)
Enable private DNS (set it to dns.google or something);
Wait for system to verify the private DNS is working (it should show dns.google in system settings below "Private DNS");
Simulate network instability using su -c 'iptables -I INPUT -p tcp --sport 853 -j DROP' (drops all incoming DNS over TLS traffic);
Enable Shadowsocks VPN with route set to bypass China; (so that local DNS resolving is enabled)
Tap test Internet connectivity a lot of times (>64 times to be safe so that IO thread pool would be full);
Attempt to shut down service. (if the bug did not occur, go back to 5)
What happened: All IO threads are blocked at native call android_getaddrinfo, specifically, fread, which never returns.
Curiously, this does not happen for regular DNS traffic as there seems to be timeouts for those, but not for DNS for TLS.
To reproduce this bug:
dns.google
or something);dns.google
in system settings below "Private DNS");su -c 'iptables -I INPUT -p tcp --sport 853 -j DROP'
(drops all incoming DNS over TLS traffic);What happened: All IO threads are blocked at native call
android_getaddrinfo
, specifically,fread
, which never returns.Curiously, this does not happen for regular DNS traffic as there seems to be timeouts for those, but not for DNS for TLS.
Reported this to AOSP: https://issuetracker.google.com/issues/133874590
The text was updated successfully, but these errors were encountered: