The default proxy selector field in java.net.ProxySelector is essentially a global variable with no thread safety measures taken to ensure that accesses are valid. Anecdotally, a symptom of this bug *may* be that the field appears `null` after assignment (based on an IRC discussion with a confused user).
Here's the trivial fix: diff --git a/src/java.base/share/classes/java/net/ProxySelector.java b/src/java.base/share/classes/java/net/ProxySelector.java index c1e97ecc981..e52c888f755 100644 --- a/src/java.base/share/classes/java/net/ProxySelector.java +++ b/src/java.base/share/classes/java/net/ProxySelector.java @@ -65,7 +65,7 @@ public abstract class ProxySelector { * * @see #setDefault(ProxySelector) */ - private static ProxySelector theProxySelector; + private static volatile ProxySelector theProxySelector; static { try { -- - DML • he/him