You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Marco Campelo (JIRA)" <ji...@apache.org> on 2007/01/03 17:07:27 UTC
[jira] Commented: (NET-145) Deadlock in TelnetInputStream
[ https://issues.apache.org/jira/browse/NET-145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12461984 ]
Marco Campelo commented on NET-145:
-----------------------------------
This deadlock happens when you lost the connection with the FTP server and tries to send a logout () command.
Find below the thead dump from a Solaris box:
Full thread dump Java HotSpot(TM) Client VM (1.4.2_08-b03 mixed mode):
"Thread-0" daemon prio=6 tid=0x001cbf18 nid=0x9 runnable [f9a7f000..f9a7fc30]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
- locked <0xf1845a20> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.PushbackInputStream.read(PushbackInputStream.java:120)
at org.apache.commons.net.io.FromNetASCIIInputStream.__read(FromNetASCIIInputStream.java:75)
at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:170)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
- locked <0xf1846988> (a org.apache.commons.net.telnet.TelnetInputStream)
at org.apache.commons.net.telnet.TelnetInputStream.__read(TelnetInputStream.java:114)
at org.apache.commons.net.telnet.TelnetInputStream.run(TelnetInputStream.java:535)
at java.lang.Thread.run(Thread.java:534)
"Signal Dispatcher" daemon prio=10 tid=0x000cddc0 nid=0x6 waiting on condition [0..0]
"Finalizer" daemon prio=8 tid=0x000c7d68 nid=0x4 in Object.wait() [fc77f000..fc77fc30]
at java.lang.Object.wait(Native Method)
- waiting on <0xf1f437a8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0xf1f437a8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x000c72e8 nid=0x3 in Object.wait() [fe27f000..fe27fc30]
at java.lang.Object.wait(Native Method)
- waiting on <0xf1f43810> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:429)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
- locked <0xf1f43810> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x000356b8 nid=0x1 in Object.wait() [ffbfe000..ffbff164]
at java.lang.Object.wait(Native Method)
- waiting on <0xf18475f8> (a [I)
at java.lang.Object.wait(Object.java:429)
at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:339)
- locked <0xf18475f8> (a [I)
at org.apache.commons.net.telnet.TelnetInputStream.read(TelnetInputStream.java:466)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
- locked <0xf1849700> (a java.io.BufferedInputStream)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
- locked <0xf184a0c0> (a java.io.InputStreamReader)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
- locked <0xf184a0c0> (a java.io.InputStreamReader)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:264)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:460)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:520)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:569)
at org.apache.commons.net.ftp.FTP.quit(FTP.java:781)
at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:706)
at com.nokia.ci.nwg.util.ftp.FTPHandler.disconnect(FTPHandler.java:318)
at com.nokia.ci.nwg.CDRTransmitter.doPerformControl(CDRTransmitter.java:71)
at com.nokia.ci.nwg.CDRProcessor.doProccessCDRs(CDRProcessor.java:59)
at com.nokia.ci.nwg.CDRProcessor.main(CDRProcessor.java:85)
"VM Thread" prio=5 tid=0x000c64a0 nid=0x2 runnable
"VM Periodic Task Thread" prio=10 tid=0x000d0c20 nid=0x8 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x000cd488 nid=0x5 runnable
> Deadlock in TelnetInputStream
> -----------------------------
>
> Key: NET-145
> URL: https://issues.apache.org/jira/browse/NET-145
> Project: Commons Net
> Issue Type: Bug
> Affects Versions: 1.4 Final
> Environment: Heavy mutlithreaded environment using Jakarta VFS (which uses Commons Net) for ftp file transfers
> Reporter: Norbert Seekircher
> Fix For: 2.0
>
>
> "Sometimes" single threads of our application (each thread transfering data from ftp servers) get locked forever. When monitoring our tool with JConsole, I can see that such a thread usually hangs at org.apache.commons.net.telnet.TelnetInputStream, line 339.
> This line contains the statement
> __queue.wait();
> Unfortunately I haven't found a way to reproduce this issue, it just happens about once a day (while running 24 hours and transfering about 50000 files).
> As a quick and dirty workaround: What do you think about replacing this line with something like
> long startTime = System.currentTimeMillis();
> __queue.wait(60000);
> if ((System.currentTimeMillis() - startTime) > 55000) {
> throw new InterruptedException("Unknown strange and nasty blocker detected");
> }
> So at least it would not just block the thread.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org