[jcifs] Possible deadlock on SmbFile.getInputStream()?

Robin Jansohn snoopi30 at web.de
Tue Mar 15 07:27:40 UTC 2016


I've written a parser which (for now) sequentially reads a file from around
10000 shares. I'm getting what seems like a deadlock after a couple of hours
of parsing (last time after ~4.5h). I'm not doing any threading yet to keep
it simple, connectionTimeout and readTimeout are set to 30 seconds.

Here's the thread dump of the interesting threads (I can also send the full
thread dump):
"RMI TCP Connection(30)-10.189.22.141" #1603 daemon prio=5 os_prio=0
tid=0x00000000551c3000 nid=0x11ec runnable [0x00000000594fe000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
	at java.net.SocketInputStream.read(SocketInputStream.java:170)
	at java.net.SocketInputStream.read(SocketInputStream.java:141)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
	- locked <0x00000000f8780398> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:83)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)
	at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
	at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$256(TCPTransport.java:683)
	at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$10/305000138.run(Unknown
Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
	at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- <0x00000000f87804d8> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"main" #1 prio=5 os_prio=0 tid=0x00000000024af800 nid=0x434 in Object.wait()
[0x000000000283e000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:143)
	- locked <0x00000000e0780978> (a jcifs.smb.SmbTransport)
	at jcifs.smb.SmbFile.doConnect(SmbFile.java:911)
	at jcifs.smb.SmbFile.connect(SmbFile.java:954)
	at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
	at jcifs.smb.SmbFile.open0(SmbFile.java:972)
	at jcifs.smb.SmbFile.open(SmbFile.java:1006)
	at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73)
	at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65)
	at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844)
	at control.Parser.getFileEncoding(Parser.java:205)
	at control.Parser.parse(Parser.java:141)
	at control.Parser.run(Parser.java:85)
	at control.Main.main(Main.java:40)

   Locked ownable synchronizers:
	- None




--
View this message in context: http://samba.2283325.n4.nabble.com/Possible-deadlock-on-SmbFile-getInputStream-tp4699648.html
Sent from the Samba - jcifs mailing list archive at Nabble.com.



More information about the jCIFS mailing list