Randomly some builds fails on ssh-slaves because of a StreamCorruptedException.

      It was not happening at all a couple of version ago.

      Here is the log:

      Construction à distance sur XXXXXXX
      FATAL: hudson.remoting.RequestAbortedException: java.io.StreamCorruptedException: invalid type code: 4B
      hudson.remoting.RequestAbortedException: hudson.remoting.RequestAbortedException: java.io.StreamCorruptedException: invalid type code: 4B
      at hudson.remoting.Request.call(Request.java:137)
      at hudson.remoting.Channel.call(Channel.java:629)
      at hudson.FilePath.act(FilePath.java:745)
      at hudson.FilePath.act(FilePath.java:738)
      at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:683)
      at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:632)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1171)
      at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:501)
      at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:415)
      at hudson.model.Run.run(Run.java:1362)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:145)
      Caused by: hudson.remoting.RequestAbortedException: java.io.StreamCorruptedException: invalid type code: 4B
      at hudson.remoting.Request.abort(Request.java:257)
      at hudson.remoting.Channel.terminate(Channel.java:680)
      at hudson.remoting.Channel$ReaderThread.run(Channel.java:971)
      Caused by: java.io.StreamCorruptedException: invalid type code: 4B
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
      at hudson.remoting.Channel$ReaderThread.run(Channel.java:947)

          [JENKINS-8856] StreamCorruptedException

          i b created issue -

          Petr H added a comment -

          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.

          Petr H added a comment - 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.

          The SSH slaves plugin set up the connection via stdin/stdout of the Java process. We replace System.out, so that Java programs writing to System.out won't corrupt the stream, but if some native code in JVM writes to the stdout (file handle 1), then it can corrupt the data stream. The class loading failure implies that this is what's going on. Some JVM options are known to do this, too.

          I guess I should do dup and close system calls to avoid using the stdout so that it won't corrupt the stream. I should also introduce the optional framing with checksum to detect this more eagerly.

          Kohsuke Kawaguchi added a comment - The SSH slaves plugin set up the connection via stdin/stdout of the Java process. We replace System.out, so that Java programs writing to System.out won't corrupt the stream, but if some native code in JVM writes to the stdout (file handle 1), then it can corrupt the data stream. The class loading failure implies that this is what's going on. Some JVM options are known to do this, too. I guess I should do dup and close system calls to avoid using the stdout so that it won't corrupt the stream. I should also introduce the optional framing with checksum to detect this more eagerly.

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          core/src/main/java/hudson/util/jna/GNUCLibrary.java
          core/src/main/java/jenkins/slaves/StandardOutputSwapper.java
          pom.xml
          http://jenkins-ci.org/commit/jenkins/3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3
          Log:
          JENKINS-8856 evacuate stdout at OS level to avoid interference with
          JVM.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/util/jna/GNUCLibrary.java core/src/main/java/jenkins/slaves/StandardOutputSwapper.java pom.xml http://jenkins-ci.org/commit/jenkins/3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3 Log: JENKINS-8856 evacuate stdout at OS level to avoid interference with JVM.

          dogfood added a comment -

          Integrated in jenkins_main_trunk #1076
          JENKINS-8856 evacuate stdout at OS level to avoid interference with

          Kohsuke Kawaguchi : 3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3
          Files :

          • pom.xml
          • core/src/main/java/jenkins/slaves/StandardOutputSwapper.java
          • core/src/main/java/hudson/util/jna/GNUCLibrary.java
          • changelog.html

          dogfood added a comment - Integrated in jenkins_main_trunk #1076 JENKINS-8856 evacuate stdout at OS level to avoid interference with Kohsuke Kawaguchi : 3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3 Files : pom.xml core/src/main/java/jenkins/slaves/StandardOutputSwapper.java core/src/main/java/hudson/util/jna/GNUCLibrary.java changelog.html

          I won't be doing framing. See the related remoting commits for why it can induce the reader block.

          So I'm marking this issue as closed.

          Kohsuke Kawaguchi added a comment - I won't be doing framing. See the related remoting commits for why it can induce the reader block. So I'm marking this issue as closed.
          Kohsuke Kawaguchi made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          core/src/main/java/hudson/util/jna/GNUCLibrary.java
          core/src/main/java/jenkins/slaves/StandardOutputSwapper.java
          pom.xml
          http://jenkins-ci.org/commit/jenkins/3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3
          Log:
          JENKINS-8856 evacuate stdout at OS level to avoid interference with
          JVM.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/util/jna/GNUCLibrary.java core/src/main/java/jenkins/slaves/StandardOutputSwapper.java pom.xml http://jenkins-ci.org/commit/jenkins/3f4d01ec15ee40f94e861e9e70403ac6b16c1ed3 Log: JENKINS-8856 evacuate stdout at OS level to avoid interference with JVM.

          Is this likely to have affected ordering of stdout and sterr in the log? We are seeing a problem now where output from an SSH linux slave has different ordering of stdout and stderr in the Jenkins log as opposed to when you run the build manually logged into the machine.

          Stephen Morrison added a comment - Is this likely to have affected ordering of stdout and sterr in the log? We are seeing a problem now where output from an SSH linux slave has different ordering of stdout and stderr in the Jenkins log as opposed to when you run the build manually logged into the machine.

          Indra Gunawan added a comment -

          We are seeing this error on Jenkins 1.455

          INFO: Attempting to reconnect sjc-bld87-lnx
          Apr 24, 2012 2:22:43 PM hudson.remoting.Channel$ReaderThread run
          SEVERE: I/O error in channel sjc-bld87-lnx
          java.io.StreamCorruptedException: invalid type code: 23
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
          at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
          at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127)
          Apr 24, 2012 2:22:45 PM hudson.slaves.CommandLauncher launchINFO: Attempting to reconnect sjc-bld87-lnx
          Apr 24, 2012 2:22:43 PM hudson.remoting.Channel$ReaderThread run
          SEVERE: I/O error in channel sjc-bld87-lnx
          java.io.StreamCorruptedException: invalid type code: 23
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
          at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
          at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127)
          Apr 24, 2012 2:22:45 PM hudson.slaves.CommandLauncher launch

          The build is not starting and stuck on the slave.

          -Indra

          Indra Gunawan added a comment - We are seeing this error on Jenkins 1.455 INFO: Attempting to reconnect sjc-bld87-lnx Apr 24, 2012 2:22:43 PM hudson.remoting.Channel$ReaderThread run SEVERE: I/O error in channel sjc-bld87-lnx java.io.StreamCorruptedException: invalid type code: 23 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127) Apr 24, 2012 2:22:45 PM hudson.slaves.CommandLauncher launchINFO: Attempting to reconnect sjc-bld87-lnx Apr 24, 2012 2:22:43 PM hudson.remoting.Channel$ReaderThread run SEVERE: I/O error in channel sjc-bld87-lnx java.io.StreamCorruptedException: invalid type code: 23 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127) Apr 24, 2012 2:22:45 PM hudson.slaves.CommandLauncher launch The build is not starting and stuck on the slave. -Indra

            kohsuke Kohsuke Kawaguchi
            ebannn i b
            Votes:
            3 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: