[ https://issues.jenkins-ci.org/browse/JENKINS-12037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=159346#comment-159346 ]
Richard Mortimer commented on JENKINS-12037: -------------------------------------------- Problem found. Unfortunately it is deep in the emulator (qemu) startup code. The following code registers the emulator instance with the adb server. {code} qemu-setup.c: sprintf(tmp,"0012host:emulator:%d",base_port+1); socket_send(s, tmp, 18+4); {code} This registers the emulator with the adb server but it makes two assumptions: # that the user port is one less than the adb port for the emulator. Comments in the code also suggest that the user port was once assumed to be an even number. The server takes the adb port number supplied and subtracts one to get the user port. It then tries to connect to the user port to confirm that it really is an emulator. # only 4 characters of the adb port number is sent to the adb server (the +4 in socket_send). Thus if the port number is greater than 9999 or less than 1000 then the wrong port number is sent. I haven't searched the Android bug database for this yet but will search/report there later today. However that does not make things work for a-e-p because we will need to support older emulators. I tested a fix that uses the Jenkins port allocator to allocate 7000 for user port, 7001 for emulator adb port and then 8000 for the adb server. With that maven happily worked using {{-Dandroid.device=emulator}}. {code} [INFO] Found 1 devices connected with the Android Debug Bridge [INFO] android.device parameter set to emulator [INFO] checking device=emulator-6000_hudson_en-GB_160_WVGA_android-7_unknown_sdk, port=8000, name=hudson_en-GB_160_WVGA_android-7, isEmulator=true [INFO] Emulator emulator-6000_hudson_en-GB_160_WVGA_android-7_unknown_sdk found. {code} Obviously to provide a proper fix we need to do some magic with the port allocator plugin. Assuming that it is acceptable that we require a newer port allocator plugin for a-e-p then I'll look to extend that to help us. Failing that we can likely make the existing allocator work with a bit of messing around. > CLI - I/O error in channel Chunked connection/Unexpected termination of the > channel - still occurring in Jenkins 1.449 > ---------------------------------------------------------------------------------------------------------------------- > > Key: JENKINS-12037 > URL: https://issues.jenkins-ci.org/browse/JENKINS-12037 > Project: Jenkins > Issue Type: Bug > Components: cli > Environment: * Running on SLES9 Linux server with 4 CPUs and plenty > of diskspace. > * Tomcat 7.0.22 > * JDK 1.6.0_14 > * Only ONE Master configuration - no slaves are configured > * 3 Executors - (one less than the max number of CPUs) > Reporter: mark streit > Attachments: Tomcat7_Jenkins1449_logs.zip > > > We reported an issue some time back that was also listed as fixed in Jenkins > 1.441: > Log: > [FIXED JENKINS-11130] SEVERE: I/O error in channel Chunked connection when > using jenkins-cli.jar > Perhaps another bug should NOT be submitted so I have added the following > comments below the line to the original defect 11130 comments section in case > it can be reviewed/re-opened. > We did NOT try to make any adjustments to the Tomcat configuration: > Tomcat Connector connectionUploadTimeout > but we are also now seeing the same problem with Winstone when at this same > 1.441 level. We did revert to the 1.438 version of the CLI (leaving the WAR > at 1.441 running in Winstone) and that is serving asthe current workaround. > ================================================================================================ > We have downloaded and installed the LATEST 1.441 release that lists the fix > for this problem. Currently we were running 1.438 on Winstone only (since > with Tomcat 6 or 7, we had experienced the error HOWEVER yet under Winstone, > it worked OK so that was our workaround - while running 1.438). > Now with Jenkins 1.441 - we are getting the ERROR again and NOW WITH BOTH > Winstone and the Tomcat configurations). We have left the Jenkins 1.441 WAR > file in place running on Winstone, and reverted the CLI jar file back to the > 1.438 version for now and that appears to work again with Winstone. > Checked Manifest of CLI jar downloaded with the 1.441 WAR installation: > Manifest-Version: 1.0 > Archiver-Version: Plexus Archiver > Created-By: Apache Maven > Built-By: kohsuke > Build-Jdk: 1.6.0_26 > Main-Class: hudson.cli.CLI > Jenkins-CLI-Version: 1.441 > Under Tomcat 7, we get this stacktrace: > Started by command line > [workspace] $ /bin/bash -xe > /opt/apache-tomcat-7.0.22_jenkins/temp/hudson32817888834817830.sh > + /opt/Sun/jdk1.6.0_14/bin/java -jar /opt/Sun/jdk1.6.0_14/lib/jenkins-cli.jar > -s http://11.22.33.44:8082/jenkins/ build XYZ_Project-SharedLibs -s -p > SVN_PATH=trunk > Dec 5, 2011 12:59:11 PM hudson.remoting.Channel$ReaderThread run > SEVERE: I/O error in channel Chunked connection to > http://11.22.33.44:8082/jenkins/cli > java.io.IOException: Unexpected termination of the channel > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1115) > Caused by: java.io.EOFException > at > java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1109) > Exception in thread "main" hudson.remoting.RequestAbortedException: > hudson.remoting.RequestAbortedException: java.io.IOException: Unexpected > termination of the channel > at hudson.remoting.Request.call(Request.java:149) > at hudson.remoting.Channel.call(Channel.java:681) > at > hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158) > at $Proxy2.main(Unknown Source) > at hudson.cli.CLI.execute(CLI.java:200) > at hudson.cli.CLI._main(CLI.java:330) > at hudson.cli.CLI.main(CLI.java:245) > Caused by: hudson.remoting.RequestAbortedException: java.io.IOException: > Unexpected termination of the channel > at hudson.remoting.Request.abort(Request.java:273) > at hudson.remoting.Channel.terminate(Channel.java:732) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1139) > Caused by: java.io.IOException: Unexpected termination of the channel > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1115) > Caused by: java.io.EOFException > at > java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1109) > Build step 'Execute shell' marked build as failure > Notifying upstream projects of job completion > Finished: FAILURE > Under Winstone, we get this stacktrace - it's somewhat different: > Started by command line > [workspace] $ /bin/bash -xe /tmp/hudson10791816374444704.sh > + /opt/Sun/jdk1.6.0_14/bin/java -jar /opt/Sun/jdk1.6.0_14/lib/jenkins-cli.jar > -s http://11.22.33.44:8082/jenkins/ build XYZ_Project-SharedLibs -s -p > SVN_PATH=trunk > Dec 5, 2011 1:18:22 PM hudson.remoting.Channel$ReaderThread run > SEVERE: I/O error in channel Chunked connection to > http://11.22.33.44:8082/jenkins/cli > java.io.IOException: Premature EOF > at > sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:538) > > (http://www.http.ChunkedInputStream.readAheadBlocking%28ChunkedInputStream.java:538%29) > at sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:582) > (http://www.http.ChunkedInputStream.readAhead%28ChunkedInputStream.java:582%29) > at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:669) > (http://www.http.ChunkedInputStream.read%28ChunkedInputStream.java:669%29) > at java.io.FilterInputStream.read(FilterInputStream.java:116) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2504) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2504%29) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2499) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2499%29) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2488) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2488%29) > at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2249) > at > java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2542) > at > java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1109) > Exception in thread "main" hudson.remoting.RequestAbortedException: > hudson.remoting.RequestAbortedException: java.io.IOException: Premature EOF > at hudson.remoting.Request.call(Request.java:149) > at hudson.remoting.Channel.call(Channel.java:681) > at > hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158) > at $Proxy2.main(Unknown Source) > at hudson.cli.CLI.execute(CLI.java:200) > at hudson.cli.CLI._main(CLI.java:330) > at hudson.cli.CLI.main(CLI.java:245) > Caused by: hudson.remoting.RequestAbortedException: java.io.IOException: > Premature EOF > at hudson.remoting.Request.abort(Request.java:273) > at hudson.remoting.Channel.terminate(Channel.java:732) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1139) > Caused by: java.io.IOException: Premature EOF > at > sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:538) > > (http://www.http.ChunkedInputStream.readAheadBlocking%28ChunkedInputStream.java:538%29) > at sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:582) > (http://www.http.ChunkedInputStream.readAhead%28ChunkedInputStream.java:582%29) > at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:669) > (http://www.http.ChunkedInputStream.read%28ChunkedInputStream.java:669%29) > at java.io.FilterInputStream.read(FilterInputStream.java:116) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2504) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2504%29) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2499) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2499%29) > at > sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2488) > > (http://www.protocol.http.HttpURLConnection$HttpInputStream.read%28HttpURLConnection.java:2488%29) > at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2249) > at > java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2542) > at > java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) > at hudson.remoting.Channel$ReaderThread.run(Channel.java:1109) > Build step 'Execute shell' marked build as failure > Notifying upstream projects of job completion > Finished: FAILURE -- 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