Hi,
We are having an issue with jcifs causing threads to hang in
a web servlet environment. We are using jcifs as a servlet filter for
NTLM authentication. I’m wondering if anyone has experienced this
thread hanging problem and if there is a solution. We have
attempted to look through the code as to where we think the problem is
occurring based on the stack traces (see below) without any success.
Jcifs version: 1.1.6
Websphere version 5.0
We are seeing the following exceptions being thrown which appear
to correspond to the thread never being released.
jcifs.smb.SmbException: Timeout waiting for response
from server: xx.domain.com/xxx.xxx.xxx.xxx
at
jcifs.smb.SmbTransport.send(SmbTransport.java:677)
at
jcifs.smb.SmbSession.sessionSetup(SmbSession.java:286)
at
jcifs.smb.SmbSession.send(SmbSession.java:243)
at
jcifs.smb.SmbTree.treeConnect(SmbTree.java:134)
at
jcifs.smb.SmbSession.logon(SmbSession.java:174)
at
jcifs.smb.SmbSession.logon(SmbSession.java:167)
at internalsso.authenticator.JcifsAuthenticator.processLogin(JcifsAuthenticator.java:202)
at
org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:131)
at internalsso.
SecurityFilter.doFilter(SecurityFilter.java:115)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1010)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:592)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:204)
at
com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:125)
at
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:286)
at
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at
com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:116)
at
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at
com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:615)
at
com.ibm.ws.http.HttpConnection.run(HttpConnection.java:449)
at
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:912)
When we take a thread dump on the JVM, all of the threads
are hung in the same place. The stack trace associated with the thread
dump for each hung thread is the following:
"Servlet.Engine.Transports : 11785" daemon
prio=10 tid=025d2cd8 nid=19090 lwp_id=3817004 in Object.wait()
[0x56b08000..0x56b074f0]
at java.lang.Object.wait(Native
Method)
at java.lang.Object.wait(Object.java:429)
at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:877)
- locked
<68098a10> (a jcifs.smb.SmbTransport)
at jcifs.smb.SmbSession.getChallenge(SmbSession.java:151)
at jcifs.smb.SmbSession.getChallenge(SmbSession.java:145)
at internalsso.authenticator.JcifsAuthenticator.processLogin(JcifsAuthenticator.java:147)
at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:131)
at internalsso.SecurityFilter.doFilter(SecurityFilter.java:115)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1010)
- locked
<625dac80> (a com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:592)
- locked
<625dac80> (a com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:204)
- locked
<625dac80> (a com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:125)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:286)
at
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at
com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:116)
at
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:615)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:449)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:912)
Does anyone have any idea as to what the cause of this might
be? Thanks for any and all help you can give.
Thanks,
Scott