https://bz.apache.org/bugzilla/show_bug.cgi?id=58313
Bug ID: 58313
Summary: Data race inside the non-thread-safe HashMap
org.apache.catalina.connector.OutputBuffer.encoders
Product: Tomcat 8
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Catalina
Assignee: [email protected]
Reporter: [email protected]
I am running the test suite against a dynamic race detector called RV-Predict.
I get a few race reports on the HashMap
org.apache.catalina.connector.OutputBuffer.encoders:
Data race on field java.util.HashMap.$state: {{{
Concurrent write in thread T83 (locks held: {Monitor@67298f15})
----> at
org.apache.catalina.connector.OutputBuffer.clearEncoders(OutputBuffer.java:255)
at
org.apache.catalina.connector.Response.clearEncoders(Response.java:295)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:587)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at
org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1073)
at
org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.run(Nio2Endpoint.java:1032)
- locked Monitor@67298f15 at
org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.run(Nio2Endpoint.java:1031)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
T83 is created by T82
at
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:1010)
Concurrent read in thread T84 (locks held: {})
----> at
org.apache.catalina.connector.OutputBuffer.setConverter(OutputBuffer.java:580)
at
org.apache.catalina.connector.OutputBuffer.checkConverter(OutputBuffer.java:563)
at org.apache.catalina.connector.Response.getWriter(Response.java:599)
at
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212)
at
org.apache.coyote.http11.TestAbstractHttp11Processor$Bug57621Servlet$1.run(TestAbstractHttp11Processor.java:757)
at
org.apache.catalina.core.AsyncContextImpl$RunnableWrapper.run(AsyncContextImpl.java:549)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
T84 is created by T83
at
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:1010)
}}}
Data race on field java.util.HashMap.$state: {{{
Concurrent write in thread T60 (locks held: {Monitor@93a8632})
----> at
org.apache.catalina.connector.OutputBuffer.clearEncoders(OutputBuffer.java:255)
at
org.apache.catalina.connector.Response.clearEncoders(Response.java:295)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:587)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:277)
- locked Monitor@93a8632 at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:259)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
T60 is created by T58
at
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:1010)
Concurrent read in thread T61 (locks held: {})
----> at
org.apache.catalina.connector.OutputBuffer.setConverter(OutputBuffer.java:604)
at
org.apache.catalina.connector.OutputBuffer.checkConverter(OutputBuffer.java:563)
at org.apache.catalina.connector.Response.getWriter(Response.java:599)
at
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212)
at
org.apache.coyote.http11.TestAbstractHttp11Processor$Bug57621Servlet$1.run(TestAbstractHttp11Processor.java:757)
at
org.apache.catalina.core.AsyncContextImpl$RunnableWrapper.run(AsyncContextImpl.java:549)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
T61 is created by T60
at
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:1010)
}}}
Looks like OutputBuffer.encoders is accessed from multiple threads without
proper synchronization.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]