You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Michael Glavassevich <mr...@ca.ibm.com> on 2009/04/29 06:42:10 UTC

Re: thread lock of XMLEntityScanner' load method

I highly doubt that what you're experiencing has anything to do with
Xerces. It's just calling read() on an InputStream like any other and this
one just happens to block in the underlying socket I/O layer (as it
presumably waits for more input). What might cause a hang at that layer in
the JDK and how to work around it (e.g. perhaps setting a shorter timeout)
is a good question though better asked in another forum.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

강경태 <xm...@nhn.com> wrote on 04/28/2009 02:59:10 PM:

> Hi,
>
> I’m using xercesImpl-2.8.1.jar in tomcat 5.5.20.
> This xerces caused tomcat hang a few days ago.
>
> The thread locks happened after XMLEntityScanner' load method was
excuted.
> I know there is no the load method of XMLEntityScanner class in version
2.9.
> I want to know thre load method of XMLEntityScanner class is bug.
> Many java.io.Exception situations after XMLEntityScanner' load call
> were searched in Google.
>
> Please help.
>
> Thanks.
>
> Sample thread of java thread dump follow:
>
> "TP-Processor325" daemon prio=1 tid=0x69eaed00 nid=0xcf0 runnable
> [0x68705000..0x687061b0]
>          at java.net.SocketInputStream.socketRead0(Native Method)
>          at java.net.SocketInputStream.read(SocketInputStream.java:129)
>          at
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>          at
java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
>          at
java.io.BufferedInputStream.read(BufferedInputStream.java:313)
>          - locked <0x8eece9e0> (a java.io.BufferedInputStream)
>          at sun.net.www.http.ChunkedInputStream.
> fastRead(ChunkedInputStream.java:221)
>          at sun.net.www.http.ChunkedInputStream.
> read(ChunkedInputStream.java:662)
>          - locked <0x8eecea00> (a sun.net.www.http.ChunkedInputStream)
>          at java.io.FilterInputStream.read(FilterInputStream.java:111)
>          at sun.net.www.protocol.http.
> HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2172)
>          at org.apache.xerces.impl.
> XMLEntityManager$RewindableInputStream.read(Unknown Source)
>          at sun.nio.cs.StreamDecoder$CharsetSD.
> readBytes(StreamDecoder.java:411)
>          at sun.nio.cs.StreamDecoder$CharsetSD.
> implRead(StreamDecoder.java:453)
>          at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
>          - locked <0x8eeceab0> (a java.io.InputStreamReader)
>          at java.io.InputStreamReader.read(InputStreamReader.java:167)
>          at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
>          at org.apache.xerces.impl.XMLEntityScanner.peekChar(Unknown
Source)
>          at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.
> scanCDATASection(Unknown Source)
>          at org.apache.xerces.impl.
> XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.
> dispatch(Unknown Source)
>          at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.
> scanDocument(Unknown Source)
>          at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>          at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>          at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>          at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
Source)
>          at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.
> parse(Unknown Source)
>          at
org.apache.commons.digester.Digester.parse(Digester.java:1704)
>          at com.naver.local.weather.common.DigesterParser.
> parse(Unknown Source)
>          at com.naver.local.weather.common.bo.WeatherBaseBOImpl.
> getWeeklyWeatherBeginToday(Unknown Source)
>          at com.naver.local.weather.common.bo.WeatherBaseBOImpl.
> getCityWeather(Unknown Source)
>          at com.naver.local.weather.common.interceptor.
> LocalInjectInterceptor.setLeftFrameData(Unknown Source)
>          at com.naver.local.weather.common.interceptor.
> LocalInjectInterceptor.intercept(Unknown Source)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.PermissionInterceptor.
> intercept(PermissionInterceptor.java:71)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.UserInterceptor.
> intercept(UserInterceptor.java:88)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.MDCLoggingInterceptor.
> intercept(MDCLoggingInterceptor.java:36)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.PagerInfoInterceptor.
> intercept(PagerInfoInterceptor.java:67)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.MetaCharsetInterceptor.
> intercept(MetaCharsetInterceptor.java:50)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.naver.local.weather.common.interceptor.
> ContentFilterInterceptor.intercept(Unknown Source)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.
> RequestParamsInterceptor.intercept(RequestParamsInterceptor.java:44)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.AroundInterceptor.
> intercept(AroundInterceptor.java:31)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.AroundInterceptor.
> intercept(AroundInterceptor.java:31)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.
>
ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.DefaultActionProxy.
> execute(DefaultActionProxy.java:116)
>          at com.opensymphony.webwork.dispatcher.DispatcherUtils.
> serviceAction(DispatcherUtils.java:225)
>          at com.opensymphony.webwork.dispatcher.FilterDispatcher.
> doFilter(FilterDispatcher.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.opensymphony.webwork.dispatcher.
> ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.nhncorp.lucy.web.filter.WebworkActionCheckFilter.
> doFilter(WebworkActionCheckFilter.java:75)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.nhncorp.lucy.web.filter.ServiceFilter.
> doFilter(ServiceFilter.java:85)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at org.apache.catalina.core.StandardWrapperValve.
> invoke(StandardWrapperValve.java:213)
>          at org.apache.catalina.core.StandardContextValve.
> invoke(StandardContextValve.java:178)
>          at org.apache.catalina.core.StandardHostValve.
> invoke(StandardHostValve.java:126)
>          at org.apache.catalina.valves.ErrorReportValve.
> invoke(ErrorReportValve.java:105)
>          at org.apache.catalina.core.StandardEngineValve.
> invoke(StandardEngineValve.java:107)
>          at org.apache.catalina.connector.CoyoteAdapter.
> service(CoyoteAdapter.java:148)
>          at org.apache.jk.server.JkCoyoteHandler.
> invoke(JkCoyoteHandler.java:199)
>          at org.apache.jk.common.HandlerRequest.
> invoke(HandlerRequest.java:282)
>          at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
>          at org.apache.jk.common.ChannelSocket.
> processConnection(ChannelSocket.java:697)
>          at org.apache.jk.common.ChannelSocket$SocketConnection.
> runIt(ChannelSocket.java:889)
>          at org.apache.tomcat.util.threads.
> ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>          at java.lang.Thread.run(Thread.java:595)