Hi mina developers,
This is Daniel from Multi-Thread Run-time Analysis Tool for Java team.
Link: http://www.alphaworks.ibm.com/tech/mtrat
We run ftpserver-1.0.0-M4 with our tool and one user login to the server,
then a data race is reported. The data race happens in the field
"readMessages" of class
"org/apache/mina/transport/socket/nio/NioSocketSession". Thread
"pool-3-thread-1" read this field while thread "pool-2-thread-1" write to
it, which both threads don't share the same lock to protect the critical
section. We got some similar data races reported by our tool and we can post
it if necessary.
Should any expert of the project help to verify this data race? Thanks!
Data Race 4 : 1526 : org/apache/mina/transport/socket/nio/NioSocketSession :
readMessages
Thread "pool-3-thread-1" : Tid 15 : Rid 1540 : READ
Lock Set : [ ]
Vector Clock : 3
[org/apache/mina/core/session/AbstractIoSession : updateThroughput :
667]
[org/apache/mina/core/session/IdleStatusChecker : updateThroughput :
265]
[org/apache/mina/core/session/IdleStatusChecker : notifyIdleSession :
201]
[org/apache/mina/core/session/IdleStatusChecker : notifyIdleness :
150]
[org/apache/mina/core/polling/AbstractPollingIoProcessor :
notifyIdleSessions : 604]
[org/apache/mina/core/polling/AbstractPollingIoProcessor : access$700
: 58]
[org/apache/mina/core/polling/AbstractPollingIoProcessor$Worker : run
: 863]
[org/apache/mina/util/NamePreservingRunnable : run : 51]
Thread "pool-2-thread-1" : Tid 16 : Rid 1683 : WRITE
Lock Set : [ ]
Vector Clock : 2
[org/apache/mina/core/session/AbstractIoSession : increaseReadMessages
: 728]
[org/apache/mina/core/filterchain/DefaultIoFilterChain$TailFilter :
messageReceived : 746]
[org/apache/mina/core/filterchain/DefaultIoFilterChain :
callNextMessageReceived : 414]
[org/apache/mina/core/filterchain/DefaultIoFilterChain : access$1200 :
49]
[org/apache/mina/core/filterchain/DefaultIoFilterChain$EntryImpl$1 :
messageReceived : 832]
[org/apache/ftpserver/listener/nio/FtpLoggingFilter : messageReceived
: 83]
[org/apache/mina/core/filterchain/DefaultIoFilterChain :
callNextMessageReceived : 414]
[org/apache/mina/core/filterchain/DefaultIoFilterChain : access$1200 :
49]
[org/apache/mina/core/filterchain/DefaultIoFilterChain$EntryImpl$1 :
messageReceived : 832]
[org/apache/mina/core/filterchain/IoFilterEvent : fire : 60]
[org/apache/mina/filter/logging/MdcInjectionFilter : filter : 137]
[org/apache/mina/filter/util/CommonEventFilter : messageReceived : 70]
[org/apache/mina/core/filterchain/DefaultIoFilterChain :
callNextMessageReceived : 414]
[org/apache/mina/core/filterchain/DefaultIoFilterChain : access$1200 :
49]
[org/apache/mina/core/filterchain/DefaultIoFilterChain$EntryImpl$1 :
messageReceived : 832]
[org/apache/mina/filter/codec/ProtocolCodecFilter$ProtocolDecoderOutputImpl
: flush : 379]
[org/apache/mina/filter/codec/ProtocolCodecFilter : messageReceived :
173]
[org/apache/mina/core/filterchain/DefaultIoFilterChain :
callNextMessageReceived : 414]
[org/apache/mina/core/filterchain/DefaultIoFilterChain : access$1200 :
49]
[org/apache/mina/core/filterchain/DefaultIoFilterChain$EntryImpl$1 :
messageReceived : 832]
[org/apache/mina/core/filterchain/IoFilterEvent : fire : 60]
[org/apache/mina/core/session/IoEvent : run : 64]
[org/apache/mina/filter/executor/OrderedThreadPoolExecutor$Worker :
runTask : 551]
[org/apache/mina/filter/executor/OrderedThreadPoolExecutor$Worker :
runTasks : 543]
[org/apache/mina/filter/executor/OrderedThreadPoolExecutor$Worker :
run : 487]
Regards,
Daniel