https://issues.apache.org/bugzilla/show_bug.cgi?id=52353

             Bug #: 52353
           Summary: Possibility of unsynchronized concurrent access to
                    field
                    "org.apache.catalina.tribes.group.ChannelInterceptorBa
                    se.next"
           Product: Tomcat 7
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: reprogram...@gmail.com
    Classification: Unclassified


Method "org.apache.catalina.tribes.group.ChannelInterceptorBase.getNext()" is
reachable from method
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.run(),
which implements the run method of a "Runnable" class. The following is a
sequence of method calls from "MessageDispatchInterceptor.run()" to
"ChannelInterceptorBase.getNext()":

1.
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.run()
2.
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.sendAsyncData(LinkObject)
3.
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Member[],
ChannelMessage, InterceptorPayload)
4. org.apache.catalina.tribes.group.ChannelInterceptorBase.getNext()

Similarly,
"org.apache.catalina.tribes.group.ChannelInterceptorBase.setNext(ChannelInterceptor)"
may be called from
"org.apache.catalina.tribes.demos.CoordinationDemo.cmdStart(...).new Thread()
{...}.run()", which implements the "run" method of a "Thread". The following is
a sequence of method calls that shows the possibility of invoking
"ChannelInterceptorBase.setNext(ChannelInterceptor)" from a "Thread":

1. org.apache.catalina.tribes.demos.CoordinationDemo.cmdStart(...).new Thread()
{...}.run()
2. org.apache.catalina.tribes.demos.CoordinationDemo.Status.start()
3. org.apache.catalina.tribes.demos.CoordinationDemo.Status.createChannel()
4.
org.apache.catalina.tribes.group.GroupChannel.addInterceptor(ChannelInterceptor)
5.
org.apache.catalina.tribes.group.ChannelInterceptorBase.setNext(ChannelInterceptor)

Since field "org.apache.catalina.tribes.group.ChannelInterceptorBase.next" may
get accessed concurrently, it should get properly synchronized.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to