Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-2520

Remote agents on JDK 1.5 may throw a SecurityException when running against a Bamboo server on JDK 1.6

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • High
    • 2.0.2
    • 2.0
    • Agents
    • Bamboo Remote Agent on JDK 1.5 with Bamboo Server on JDK 1.6

    Description

      In BSP-661, there are cases of Remote Agents on JDK 1.5 throwing the following exception and exiting:

      java.lang.SecurityException: Prohibited package name: java.util.concurrent.locks
      	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:534)
      	at java.lang.ClassLoader.defineClass(ClassLoader.java:669)
      	at java.lang.ClassLoader.defineClass(ClassLoader.java:520)
      	at com.atlassian.bamboo.agent.bootstrap.AgentClassLoader.findClass(AgentClassLoader.java:113)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
      	at com.atlassian.bamboo.agent.bootstrap.AgentClassLoader.loadClass(AgentClassLoader.java:233)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
      	at org.apache.activemq.util.ClassLoading.load(ClassLoading.java:112)
      	at org.apache.activemq.util.ClassLoading.loadClass(ClassLoading.java:51)
      	at org.apache.activemq.util.ClassLoadingAwareObjectInputStream.load(ClassLoadingAwareObjectInputStream.java:55)
      	at org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveClass(ClassLoadingAwareObjectInputStream.java:37)
      	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544)
      	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
      	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
      	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
      	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
      	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
      	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
      	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
      	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479)
      	at java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1399)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:585)
      	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
      	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
      	at org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:166)
      	at org.springframework.jms.support.converter.SimpleMessageConverter.extractSerializableFromMessage(SimpleMessageConverter.java:222)
      	at org.springframework.jms.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:109)
      	at org.springframework.jms.core.JmsTemplate.doConvertFromMessage(JmsTemplate.java:763)
      	at org.springframework.jms.core.JmsTemplate.receiveSelectedAndConvert(JmsTemplate.java:742)
      	at com.atlassian.bamboo.v2.build.queue.AgentQueueAccessorImpl.takeBuildContext(AgentQueueAccessorImpl.java:29)
      	at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:65)
      	at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent$1.run(DefaultBuildAgent.java:101)
      	at com.atlassian.bamboo.build.pipeline.concurrent.NamedThreadFactory$1.run(NamedThreadFactory.java:32)
      	at edu.emory.mathcs.backport.java.util.concurrent.helpers.ThreadHelpers$1.run(ThreadHelpers.java:34)
      	at java.lang.Thread.run(Thread.java:613)
      

      I suspect that the server is running on JDK 1.6 (I am seeking confirmation from the customer), and that a serialised BuildContext object graph containing a reference to a member of the java.util.concurrent.locks package that appears in JDK 1.6 but not JDK 1.5 is being sent to the remote agent.

      I will use the debug logging message converter to take a look at the object graph.

      Attachments

        1. bamboo-agent-BAM-2520.jar
          692 kB
        2. message.txt
          22 kB

        Activity

          People

            ahempel Adrian Hempel [Atlassian]
            ahempel Adrian Hempel [Atlassian]
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: