-
Bug
-
Resolution: Fixed
-
P2
-
1.4.0
-
None
-
beta3
-
generic
-
generic
The fix to 4453726 has introduced a synchronization deadlock between PolicyFile and other classes. The particular situation described here is with InetAddress, but the problem is not specific to InetAddress.
For the specific example, here's thread 1:
"main" prio=5 tid=0x2b910 nid=0x1 waiting for monitor entry [ffbee000..ffbeed18]
at sun.security.provider.PolicyFile.implies(PolicyFile.java:944)
- waiting to lock <f4b51998> (a sun.security.provider.PolicyInfo)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:199)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:258)
at java.security.AccessController.checkPermission(AccessController.java:404)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1045)
at java.net.InetAddress.getLocalHost(InetAddress.java:1084)
- locked <f85bd590> (a java.lang.Class)
...
and here's thread 2:
"multicast discovery announcement listener" daemon prio=5 tid=0x21cf90 nid=0x973 waiting for monitor entry [f2a80000..f2a819e0]
at java.net.InetAddress.cacheInitIfNeeded(InetAddress.java:600)
- waiting to lock <f85bd590> (a java.lang.Class)
at java.net.InetAddress.getCachedAddress(InetAddress.java:667)
at java.net.InetAddress.getAllByName0(InetAddress.java:916)
at java.net.InetAddress.getHostFromNameService(InetAddress.java:484)
at java.net.InetAddress.getHostName(InetAddress.java:410)
at java.net.SocketPermission.getCanonName(SocketPermission.java:557)
at java.net.SocketPermission.impliesIgnoreMask(SocketPermission.java:759)
at java.net.SocketPermissionCollection.implies(SocketPermission.java:1116)
at java.security.Permissions.implies(Permissions.java:138)
at sun.security.provider.PolicyFile.implies(PolicyFile.java:947)
- locked <f4b51998> (a sun.security.provider.PolicyInfo)
...
For the specific example, here's thread 1:
"main" prio=5 tid=0x2b910 nid=0x1 waiting for monitor entry [ffbee000..ffbeed18]
at sun.security.provider.PolicyFile.implies(PolicyFile.java:944)
- waiting to lock <f4b51998> (a sun.security.provider.PolicyInfo)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:199)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:258)
at java.security.AccessController.checkPermission(AccessController.java:404)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1045)
at java.net.InetAddress.getLocalHost(InetAddress.java:1084)
- locked <f85bd590> (a java.lang.Class)
...
and here's thread 2:
"multicast discovery announcement listener" daemon prio=5 tid=0x21cf90 nid=0x973 waiting for monitor entry [f2a80000..f2a819e0]
at java.net.InetAddress.cacheInitIfNeeded(InetAddress.java:600)
- waiting to lock <f85bd590> (a java.lang.Class)
at java.net.InetAddress.getCachedAddress(InetAddress.java:667)
at java.net.InetAddress.getAllByName0(InetAddress.java:916)
at java.net.InetAddress.getHostFromNameService(InetAddress.java:484)
at java.net.InetAddress.getHostName(InetAddress.java:410)
at java.net.SocketPermission.getCanonName(SocketPermission.java:557)
at java.net.SocketPermission.impliesIgnoreMask(SocketPermission.java:759)
at java.net.SocketPermissionCollection.implies(SocketPermission.java:1116)
at java.security.Permissions.implies(Permissions.java:138)
at sun.security.provider.PolicyFile.implies(PolicyFile.java:947)
- locked <f4b51998> (a sun.security.provider.PolicyInfo)
...