Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8284520

Deadlock sun.net.www.protocol.jar.JarFileFactory and sun.nio.cs.ext.ExtendedCharsets

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 8u301
    • core-libs

      jdk8u321 test run from submitter:

      Found one Java-level deadlock:
      =============================
      "Thread-openJarURLConnectionStream":
        waiting to lock monitor 0x00007f94d00062c8 (object 0x00000000d7d96ab0, a
      sun.nio.cs.ext.ExtendedCharsets),
        which is held by "Thread-availableCharsets"
      "Thread-availableCharsets":
        waiting to lock monitor 0x00007f94ac0390a8 (object 0x00000000d7e29b48, a
      sun.net.www.protocol.jar.JarFileFactory),
        which is held by "Thread-openJarURLConnectionStream"

      Java stack information for the threads listed above:
      ===================================================
      "Thread-openJarURLConnectionStream":
              at
      sun.nio.cs.AbstractCharsetProvider.charsetForName(AbstractCharsetProvider.java
      :160)
              - waiting to lock <0x00000000d7d96ab0> (a
      sun.nio.cs.ext.ExtendedCharsets)
              at java.nio.charset.Charset.lookupExtendedCharset(Charset.java:452)
              at java.nio.charset.Charset.lookup2(Charset.java:476)
              at java.nio.charset.Charset.lookup(Charset.java:464)
              at java.nio.charset.Charset.isSupported(Charset.java:505)
              at java.lang.StringCoding.lookupCharset(StringCoding.java:99)
              at java.lang.StringCoding.encode(StringCoding.java:336)
              at java.lang.String.getBytes(String.java:918)
              at java.io.UnixFileSystem.canonicalize0(Native Method)
              at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:172)
              at java.io.File.getCanonicalPath(File.java:624)
              at java.io.FilePermission$1.run(FilePermission.java:224)
              at java.io.FilePermission$1.run(FilePermission.java:212)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.io.FilePermission.init(FilePermission.java:212)
              at java.io.FilePermission.<init>(FilePermission.java:299)
              at sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:225)
              at sun.net.www.protocol.jar.JarFileFactory.getPermission(JarFileFactory.java:225)
              at sun.net.www.protocol.jar.JarFileFactory.getCachedJarFile(JarFileFactory.java:195)
              at sun.net.www.protocol.jar.JarFileFactory.getOrCreate(JarFileFactory.java:103)
              - locked <0x00000000d7e29b48> (a sun.net.www.protocol.jar.JarFileFactory)
              at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:129)
              at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:172)
              at java.net.URL.openStream(URL.java:1092)
              at DeadlockSampleModified.openJarURLConnectionStream(DeadlockSampleModified.java:57)
              at DeadlockSampleModified.access$100(DeadlockSampleModified.java:6)
              at DeadlockSampleModified$2.run(DeadlockSampleModified.java:27)
              at java.lang.Thread.run(Thread.java:750)

      "Thread-availableCharsets":
              at sun.net.www.protocol.jar.JarFileFactory.getOrCreate(JarFileFactory.java:103)
              - waiting to lock <0x00000000d7e29b48> (a sun.net.www.protocol.jar.JarFileFactory)
              at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:129)
              at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:172)
              at java.net.URL.openStream(URL.java:1092)
              at java.lang.ClassLoader.getSystemResourceAsStream(ClassLoader.java:1324)
              at java.lang.Class.getResourceAsStream(Class.java:2221)
              at sun.nio.cs.ext.SJIS_0213$1.run(SJIS_0213.java:81)
              at sun.nio.cs.ext.SJIS_0213$1.run(SJIS_0213.java:79)
              at java.security.AccessController.doPrivileged(Native Method)
              at sun.nio.cs.ext.SJIS_0213.<clinit>(SJIS_0213.java:78)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:348)
              at sun.nio.cs.AbstractCharsetProvider.lookup(AbstractCharsetProvider.java:142)
              at sun.nio.cs.AbstractCharsetProvider.access$000(AbstractCharsetProvider.java:45)
              at sun.nio.cs.AbstractCharsetProvider$1.next(AbstractCharsetProvider.java:183)
              - locked <0x00000000d7d96ab0> (a sun.nio.cs.ext.ExtendedCharsets)
              at sun.nio.cs.AbstractCharsetProvider$1.next(AbstractCharsetProvider.java:173)
              at java.nio.charset.Charset.put(Charset.java:539)
              at java.nio.charset.Charset.access$200(Charset.java:271)
              at java.nio.charset.Charset$3.run(Charset.java:581)
              at java.nio.charset.Charset$3.run(Charset.java:573)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.nio.charset.Charset.availableCharsets(Charset.java:572)
              at DeadlockSampleModified.availableCharsets(DeadlockSampleModified.java:49)
              at DeadlockSampleModified.access$000(DeadlockSampleModified.java:6)
              at DeadlockSampleModified$1.run(DeadlockSampleModified.java:20)
              at java.lang.Thread.run(Thread.java:750)

      Found 1 deadlock.

            coffeys Sean Coffey
            shadowbug Shadow Bug
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: