Thread safety problem in java.net.ProxySelector
David Lloyd
david.lloyd at redhat.com
Wed Sep 2 13:16:56 UTC 2020
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
More information about the net-dev
mailing list