Files
jenkins/remoting
kohsuke f8e2a28eb0 Seeing dead lock after the message:
Nov 9, 2009 1:46:11 PM hudson.remoting.Channel$ReaderThread run
SEVERE: I/O error in channel This side of the channel
java.io.IOException: Write end dead
	at java.io.PipedInputStream.read(PipedInputStream.java:294)
	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:849)
Nov 9, 2009 1:46:11 PM hudson.remoting.Request$2 run
SEVERE: Failed to send back a reply
java.io.IOException: Read end dead
	at java.io.PipedInputStream.checkStateForReceive(PipedInputStream.java:246)
	at java.io.PipedInputStream.receive(PipedInputStream.java:210)
	at java.io.PipedOutputStream.write(PipedOutputStream.java:132)
	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1747)
	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1249)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
	at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1538)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:329)
	at hudson.remoting.Channel.send(Channel.java:413)
	at hudson.remoting.Request$2.run(Request.java:282)
	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)



The thread dump indicates that the test thread is stuck at british.join(), because British channel reader thread is still alive. I remember PipedInput|OutputStream being not truly multi-thread aware, so changing it to our own version to see if that fixes the problem without my digging further.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@23625 71c3de6d-444a-0410-be80-ed276b4c234a
2009-11-09 23:43:20 +00:00
..
2009-11-09 23:43:20 +00:00