https://bz.apache.org/bugzilla/show_bug.cgi?id=58401

            Bug ID: 58401
           Summary: Potential data race inside the data array used in
                    org.apache.catalina.tribes.io.ChannelData &
                    org.apache.catalina.tribes.membership.MemberImpl
           Product: Tomcat 8
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: [email protected]
          Reporter: [email protected]

Reported by RV-Predict (a dynamic race detector) when running the test suite:
Data race on array element #16: {{{
    Concurrent read in thread T47 (locks held: {Monitor@7ccb7286,
Monitor@7ccb7255, Monitor@258500df})
 ---->  at
org.apache.catalina.tribes.io.ChannelData.getDataPackage(ChannelData.java:216)
        at
org.apache.catalina.tribes.io.XByteBuffer.createDataPackage(XByteBuffer.java:350)
        at
org.apache.catalina.tribes.transport.nio.ParallelNioSender.sendMessage(ParallelNioSender.java:68)
        - locked Monitor@258500df at
org.apache.catalina.tribes.transport.nio.ParallelNioSender.sendMessage(ParallelNioSender.java:n/a)
 
        at
org.apache.catalina.tribes.transport.nio.PooledParallelSender.sendMessage(PooledParallelSender.java:51)
        at
org.apache.catalina.tribes.transport.ReplicationTransmitter.sendMessage(ReplicationTransmitter.java:54)
        at
org.apache.catalina.tribes.group.ChannelCoordinator.sendMessage(ChannelCoordinator.java:82)
        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:76)
        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:76)
        at
org.apache.catalina.tribes.group.interceptors.TestOrderInterceptor$MangleOrderInterceptor.sendMessage(TestOrderInterceptor.java:187)
        - locked Monitor@7ccb7255 at
org.apache.catalina.tribes.group.interceptors.TestOrderInterceptor$MangleOrderInterceptor.sendMessage(TestOrderInterceptor.java:n/a)
 
        at
org.apache.catalina.tribes.group.interceptors.OrderInterceptor.sendMessage(OrderInterceptor.java:88)
        at
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:76)
        at
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:233)
        at
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:186)
        at
org.apache.catalina.tribes.group.interceptors.TestOrderInterceptor$2.run(TestOrderInterceptor.java:111)
        - locked Monitor@7ccb7286 at
org.apache.catalina.tribes.group.interceptors.TestOrderInterceptor$2.run(TestOrderInterceptor.java:110)
 
    T47 is created by T1
        at
org.apache.catalina.tribes.group.interceptors.TestOrderInterceptor.testOrder2(TestOrderInterceptor.java:124)

    Concurrent write in thread T37 (locks held: {})
 ---->  at
org.apache.catalina.tribes.io.XByteBuffer.toBytes(XByteBuffer.java:478)
        at
org.apache.catalina.tribes.membership.MemberImpl.getData(MemberImpl.java:204)
        at
org.apache.catalina.tribes.membership.MemberImpl.getData(MemberImpl.java:170)
        at
org.apache.catalina.tribes.membership.MemberImpl.getData(MemberImpl.java:164)
        at
org.apache.catalina.tribes.membership.McastServiceImpl.send(McastServiceImpl.java:501)
        at
org.apache.catalina.tribes.membership.McastServiceImpl.send(McastServiceImpl.java:487)
        at
org.apache.catalina.tribes.membership.McastServiceImpl$SenderThread.run(McastServiceImpl.java:575)
    T37 is created by T31
        at
org.apache.catalina.tribes.membership.McastServiceImpl.start(McastServiceImpl.java:280)
}}}

RV-Predict uses System.identityHashCode to identify distinct memory locations.
When there is a hashcode collision, it could lead to false alarm. This occurs
more often on race report which involves array element. I am not familiar with
the code enough to check if this data array can shared between threads.

-- 
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]

Reply via email to