I'm getting sort of similar stuff in mixed 64/32 bit environment.
Master is running at x86_64 Linux OS (Tomcat 6.0.32 with locally built tcnative 1.1.20), Java 6u26 64 bit
SSH slave is running at the same OS, and here I tried several Java releases and so far it seems to be reproducible only at 32 bit JVM. And even then it occurs randomly.
Slave agent is running at Java 6u26 as well, while the actual builds (Maven 2.2.1) are (and have to be) done at Java 1.5 (1.5u30). When I use 32 bit JVM here (in order to reduce memory footprint) the StreamCorruptedException randomly occurs during build. When I Switch everything to 64 bit I'm not able to reproduce the issue (at least not for now - and I tried hard).
In my case the particular issue is like:
java.lang.reflect.UndeclaredThrowableException
at hudson.remoting.$Proxy1.fetch2(Unknown Source)
at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:122)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.postBuild(MavenBuilder.java:311)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:68)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:637)
Caused by: hudson.remoting.ChannelClosedException: channel is already closed
at hudson.remoting.Channel.send(Channel.java:486)
at hudson.remoting.Request.call(Request.java:110)
at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:160)
... 32 more
Caused by: java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1331)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:347)
at hudson.remoting.Channel$ReaderThread.run(Channel.java:1019)
But sometimes I'm getting strange ClasFormatError ones such as:
1.
java.lang.ClassFormatError: LocalVariableTable has wrong length in class file hudson/maven/reporters/MavenArtifact
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
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:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.endModule(MavenBuilder.java:318)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor$EventMonitorImpl.endEvent(LifecycleExecutorInterceptor.java:92)
at org.apache.maven.monitor.event.DefaultEventDispatcher.dispatchEnd(DefaultEventDispatcher.java:54)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:360)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
2.
java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file hudson/maven/reporters/MavenArtifact
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
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:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.endModule(MavenBuilder.java:318)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor$EventMonitorImpl.endEvent(LifecycleExecutorInterceptor.java:92)
at org.apache.maven.monitor.event.DefaultEventDispatcher.dispatchEnd(DefaultEventDispatcher.java:54)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:360)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
3. or this another one
java.io.UTFDataFormatException
at java.io.ObjectInputStream$BlockDataInputStream.readUTFSpan(ObjectInputStream.java:3008)
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:2952)
at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2765)
at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1031)
at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:631)
at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:788)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1533)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1465)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:347)
at hudson.remoting.Channel$ReaderThread.run(Channel.java:1019)
All the above comes from Jenkins 1.417 (however 1.418 makes no difference).
Note: I've got one more 64 bit slave machine with almost identical setup where the issue seems to never occur. I'm still trying to figure out why, but have found nothing interesting so far. OS and JDKs are the same at both machines.
One side note (I may create a separate issue for that if it's possible to fix it): Another strange thing I noticed when building at Java 1.5 is that if I use Tomcat 7 (7.0.16) I can't get it to work. After some tracing it seems that builder process at slave tries to load few javax.servlet classes (ServletException and few others) via Jenkins remoting, these seem to be coming from the Tomcat 7 itself where they're built for Java 6 and thus I'm getting "java.lang.UnsupportedClassVersionError: Bad version number in .class file". That's quite unfortunate and limiting.
I'm getting sort of similar stuff in mixed 64/32 bit environment.
Master is running at x86_64 Linux OS (Tomcat 6.0.32 with locally built tcnative 1.1.20), Java 6u26 64 bit
SSH slave is running at the same OS, and here I tried several Java releases and so far it seems to be reproducible only at 32 bit JVM. And even then it occurs randomly.
Slave agent is running at Java 6u26 as well, while the actual builds (Maven 2.2.1) are (and have to be) done at Java 1.5 (1.5u30). When I use 32 bit JVM here (in order to reduce memory footprint) the StreamCorruptedException randomly occurs during build. When I Switch everything to 64 bit I'm not able to reproduce the issue (at least not for now - and I tried hard).
In my case the particular issue is like:
java.lang.reflect.UndeclaredThrowableException
at hudson.remoting.$Proxy1.fetch2(Unknown Source)
at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:122)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.postBuild(MavenBuilder.java:311)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:68)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:637)
Caused by: hudson.remoting.ChannelClosedException: channel is already closed
at hudson.remoting.Channel.send(Channel.java:486)
at hudson.remoting.Request.call(Request.java:110)
at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:160)
... 32 more
Caused by: java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1331)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:347)
at hudson.remoting.Channel$ReaderThread.run(Channel.java:1019)
But sometimes I'm getting strange ClasFormatError ones such as:
1.
java.lang.ClassFormatError: LocalVariableTable has wrong length in class file hudson/maven/reporters/MavenArtifact
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
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:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.endModule(MavenBuilder.java:318)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor$EventMonitorImpl.endEvent(LifecycleExecutorInterceptor.java:92)
at org.apache.maven.monitor.event.DefaultEventDispatcher.dispatchEnd(DefaultEventDispatcher.java:54)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:360)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
2.
java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file hudson/maven/reporters/MavenArtifact
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
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:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at hudson.maven.reporters.MavenArtifactArchiver.postBuild(MavenArtifactArchiver.java:99)
at hudson.maven.MavenModuleSetBuild$Builder.postModule(MavenModuleSetBuild.java:1051)
at hudson.maven.MavenBuilder$Adapter.fireLeaveModule(MavenBuilder.java:353)
at hudson.maven.MavenBuilder$Adapter.endModule(MavenBuilder.java:318)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor$EventMonitorImpl.endEvent(LifecycleExecutorInterceptor.java:92)
at org.apache.maven.monitor.event.DefaultEventDispatcher.dispatchEnd(DefaultEventDispatcher.java:54)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:360)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
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:592)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at hudson.maven.agent.Main.launch(Main.java:185)
at hudson.maven.MavenBuilder.call(MavenBuilder.java:164)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:1001)
at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:932)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:283)
3. or this another one
java.io.UTFDataFormatException
at java.io.ObjectInputStream$BlockDataInputStream.readUTFSpan(ObjectInputStream.java:3008)
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:2952)
at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2765)
at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1031)
at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:631)
at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:788)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1533)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1465)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:347)
at hudson.remoting.Channel$ReaderThread.run(Channel.java:1019)
All the above comes from Jenkins 1.417 (however 1.418 makes no difference).
Note: I've got one more 64 bit slave machine with almost identical setup where the issue seems to never occur. I'm still trying to figure out why, but have found nothing interesting so far. OS and JDKs are the same at both machines.
One side note (I may create a separate issue for that if it's possible to fix it): Another strange thing I noticed when building at Java 1.5 is that if I use Tomcat 7 (7.0.16) I can't get it to work. After some tracing it seems that builder process at slave tries to load few javax.servlet classes (ServletException and few others) via Jenkins remoting, these seem to be coming from the Tomcat 7 itself where they're built for Java 6 and thus I'm getting "java.lang.UnsupportedClassVersionError: Bad version number in .class file". That's quite unfortunate and limiting.