[ https://issues.jenkins-ci.org/browse/JENKINS-6604?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=160283#comment-160283 ]
Simon Schlachter commented on JENKINS-6604: ------------------------------------------- Same Issue here. Running Jenkins ver. 1.437 > Possible race condition in RemoteClassLoader renders slave unusable > ------------------------------------------------------------------- > > Key: JENKINS-6604 > URL: https://issues.jenkins-ci.org/browse/JENKINS-6604 > Project: Jenkins > Issue Type: Bug > Components: core > Affects Versions: current > Environment: CentOS 5.3, Sun JDK 1.6.0_19 64-bit > Reporter: michal_grzejszczak > Priority: Minor > > We are restarting hudson each Sunday afternoon to evade problems with memory > leaks and have a couple of nightly builds that kick in at midnight. The > scenario is that Hudson is fresh when multiple builds kick in, that is its > remote class loader did not have a chance to read any classes yet. We have 3 > executors defined. I suppose that the SCM poll action that is sent in many > build procedures causes multiple requests to load classes for the SCM (we use > slightly hacked version of CVS SCM). We are getting the following exception: > java.lang.LinkageError: loader (instance of > hudson/remoting/RemoteClassLoader): attempted duplicate class definition for > name: "hudson/model/ModelObject" > I have looked around on the web and found this > (http://jira.codehaus.org/browse/JETTY-418) that lead me to believe that lack > of synchronization while loading classes in remote class loader is the cause. > Full stack trace: > {code} > Started on May 24, 2010 12:00:54 AM > FATAL: remote file operation failed: /home/hudson-slave/workspace/BPE_8.1SR > at hudson.remoting.Channel@1219b8c:slave-81 > hudson.util.IOException2: remote file operation failed: > /home/hudson-slave/workspace/BPE_8.1SR at > hudson.remoting.Channel@1219b8c:slave-81 > at hudson.FilePath.act(FilePath.java:743) > at hudson.FilePath.act(FilePath.java:729) > at com.syncron.hudson.cvs2.CVS2.isUpdatable(CVS2.java:813) > at com.syncron.hudson.cvs2.CVS2.pollChanges(CVS2.java:310) > at hudson.scm.SCM.poll(SCM.java:370) > at hudson.model.AbstractProject.poll(AbstractProject.java:1153) > at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:330) > at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:359) > at > hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.io.IOException: Remote call on slave-81 failed > at hudson.remoting.Channel.call(Channel.java:560) > at hudson.FilePath.act(FilePath.java:736) > ... 14 more > Caused by: java.lang.LinkageError: loader (instance of > hudson/remoting/RemoteClassLoader): attempted duplicate class definition for > name: "hudson/model/ModelObject" > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) > at java.lang.ClassLoader.defineClass(ClassLoader.java:616) > at java.lang.ClassLoader.defineClass(ClassLoader.java:466) > at > hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:151) > at > hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) > at java.lang.ClassLoader.defineClass(ClassLoader.java:616) > at java.lang.ClassLoader.defineClass(ClassLoader.java:466) > at > hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:151) > at > hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at java.lang.Class.getDeclaredFields0(Native Method) > at java.lang.Class.privateGetDeclaredFields(Class.java:2291) > at java.lang.Class.getDeclaredField(Class.java:1880) > at > java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1610) > at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52) > at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425) > at java.security.AccessController.doPrivileged(Native Method) > at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413) > at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310) > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at hudson.remoting.UserRequest.deserialize(UserRequest.java:178) > at hudson.remoting.UserRequest.perform(UserRequest.java:98) > at hudson.remoting.UserRequest.perform(UserRequest.java:48) > at hudson.remoting.Request$2.run(Request.java:270) > ... 6 more > Done. Took 63 ms > No changes > {code} > If we start single job manually after restart it executes properly. Any > consecutive jobs will also run fine. However if we get that exception once, > no other jobs that use the class mentioned in exception (pretty much all) > will execute anymore until slave is restarted. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira