Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-32622

deadlock due to support-core use of classloading during logging

XMLWordPrintable

      the support-core plugin causes classes to be loaded via remoting during logging.
      This can lead to an intresting deadlock as classload itself causes logging and you can get into a situation where the logging causes classloading - but the class loader needs to log but can't as it is blocked trying to load the class.

      support-core should not rely on libraries external to the plugin or the JDK.

      "pool-1-thread-1 for CLI connection to https://cloudbees.ci.cloudbees.com" prio=10 tid=0x00007f3f2c04d800 nid=0x6d6f waiting for monitor entry [0x00007f3f2b9b8000]
         java.lang.Thread.State: BLOCKED (on object monitor)
      	at org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.appendTo(FastDateFormat.java:1306)
      	at org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.appendTo(FastDateFormat.java:1288)
      	at org.apache.commons.lang.time.FastDateFormat.applyRules(FastDateFormat.java:890)
      	at org.apache.commons.lang.time.FastDateFormat.format(FastDateFormat.java:821)
      	at com.cloudbees.jenkins.support.SupportLogFormatter.format(SupportLogFormatter.java:52)
      	at com.cloudbees.jenkins.support.SupportLogHandler.publish(SupportLogHandler.java:99)
      	at java.util.logging.Logger.log(Logger.java:616)
      	at java.util.logging.Logger.doLog(Logger.java:641)
      	at java.util.logging.Logger.log(Logger.java:730)
      	at hudson.remoting.Request$2.run(Request.java:344)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      
      "Channel reader thread: CLI connection to https://cloudbees.ci.cloudbees.com / waiting for hudson.remoting.Channel@64c53235:CLI connection to https://cloudbees.ci.cloudbees.com" prio=10 tid=0x00007f3f4c332000 nid=0x6d6e in Object.wait() [0x00007f3f2bab8000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      	at java.lang.Object.wait(Native Method)
      	- waiting on <0x00000000bb751e28> (a hudson.remoting.RemoteInvocationHandler$RPCRequest)
      	at hudson.remoting.Request.call(Request.java:146)
      	- locked <0x00000000bb751e28> (a hudson.remoting.RemoteInvocationHandler$RPCRequest)
      	at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:182)
      	at com.sun.proxy.$Proxy2.fetch2(Unknown Source)
      	at hudson.remoting.DumbClassLoaderBridge.fetch2(DumbClassLoaderBridge.java:40)
      	at hudson.remoting.DumbClassLoaderBridge.fetch3(DumbClassLoaderBridge.java:52)
      	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:157)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
      	- locked <0x00000000ce9a0078> (a hudson.remoting.RemoteClassLoader)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
      	at org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.appendTo(FastDateFormat.java:1306)
      	at org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.appendTo(FastDateFormat.java:1288)
      	at org.apache.commons.lang.time.FastDateFormat.applyRules(FastDateFormat.java:890)
      	at org.apache.commons.lang.time.FastDateFormat.format(FastDateFormat.java:821)
      	at com.cloudbees.jenkins.support.SupportLogFormatter.format(SupportLogFormatter.java:52)
      	at com.cloudbees.jenkins.support.SupportLogHandler.publish(SupportLogHandler.java:99)
      	at java.util.logging.Logger.log(Logger.java:616)
      	at java.util.logging.Logger.doLog(Logger.java:641)
      	at java.util.logging.Logger.log(Logger.java:730)
      	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:68)
      
      "main / waiting for hudson.remoting.Channel@64c53235:CLI connection to https://cloudbees.ci.cloudbees.com" prio=10 tid=0x00007f3f4c00a000 nid=0x6d63 in Object.wait() [0x00007f3f55cfc000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      	at java.lang.Object.wait(Native Method)
      	- waiting on <0x00000000ce9a0358> (a hudson.remoting.UserRequest)
      	at hudson.remoting.Request.call(Request.java:146)
      	- locked <0x00000000ce9a0358> (a hudson.remoting.UserRequest)
      	at hudson.remoting.Channel.call(Channel.java:752)
      	at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:179)
      	at com.sun.proxy.$Proxy3.main(Unknown Source)
      	at hudson.cli.CLI.execute(CLI.java:336)
      	at hudson.cli.CLI._main(CLI.java:501)
      	at hudson.cli.CLI.main(CLI.java:387)
      

            Unassigned Unassigned
            teilo James Nord
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: