[ 
https://issues.apache.org/jira/browse/FTPSERVER-122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Lécharny resolved FTPSERVER-122.
-----------------------------------------
    Fix Version/s: 1.2.1
       Resolution: Fixed

All the values are now atomic integer or long, thus protected against 
concurrent access.

> Data races are found in FtpStatisticsImpl
> -----------------------------------------
>
>                 Key: FTPSERVER-122
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-122
>             Project: FtpServer
>          Issue Type: Bug
>          Components: Core
>         Environment: CentOS 5.
> [13:54][qiyao@qiyaows:~]$ uname -a
> Linux qiyaows.dyndns.org 2.6.18-8.1.8.el5 #1 SMP Tue Jul 10 06:50:22 EDT 2007 
> i686 i686 i386 GNU/Linux
> [13:55][qiyao@qiyaows:~]$ java -version
> java version "1.6.0"
> Java(TM) SE Runtime Environment (build pxi3260-20071123_01)
> IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 
> jvmxi3260-20071121_15015 (JIT enabled)
> J9VM - 20071121_015015_lHdSMR
> JIT  - r9_20071121_1330
> GC   - 20071031_AA)
> JCL  - 20071118_01
>            Reporter: Yao Qi
>            Priority: Minor
>             Fix For: 1.2.1
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> We are developing a runtime analysis tool for java program, MTRAT 
> (http://www.alphaworks.ibm.com/tech/mtrat), and we find two data races when 
> we check ftpserver by MTRAT.
> currAnonLogins and currLogins are accessed without any protection by locks.  
> This problem also exists for other private fields.  Hopefully, 
> AtomicInteger/AtuomicLong in java.util.concurrent.atomic package could be 
> used to fix this bug.
> Steps to show this bug,
> 1.  We launch ftpserver command line with the instrumentation and analysis of 
> MTRAT .
> [12:41][qiyao@qiyaows:~/SourceCode/svn/ftpserver]$ 
> ~/workspace-3.2/com.ibm.threadanalysis.dynamic/mtrat/mtrat  -cp 
> /home/qiyao/SourceCode/svn/ftpserver/./core/target/classes:/home/qiyao/SourceCode/svn/ftpserver/./ftplet-api/target/classes:/home/qiyao/SourceCode/svn/ftpserver/./commons-net-2/target/classes:/home/qiyao/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/home/qiyao/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/home/qiyao/.m2/repository/log4j/log4j/1.2.13/log4j-1.2.13.jar:/home/qiyao/.m2/repository/org/slf4j/slf4j-api/1.4.3/slf4j-api-1.4.3.jar:/home/qiyao/.m2/repository/org/slf4j/slf4j-log4j12/1.4.3/slf4j-log4j12-1.4.3.jar:/home/qiyao/.m2/repository/org/apache/mina/mina-core/2.0.0-M2-SNAPSHOT/mina-core-2.0.0-M2-SNAPSHOT.jar
>  org.apache.ftpserver.commandline.CommandLine  -prop ftpd.properties >& log
> 2.  Open two new consoles and login as qiyao and anonymous respectively,
> In console 1,
> $ ftp
> ftp> open localhost 1234
> Connected to qiyaows.dyndns.org.
> 220 Service ready for new user.
> KERBEROS_V4 rejected as an authentication type
> Name (localhost:qiyao): anonymous
> 331 Guest login okay, send your complete e-mail address as password.
> Password:
> 230 User logged in, proceed.
> Remote system type is UNIX.
> ftp> bye
> 221 Goodbye.
> In console 2,
> ftp> open localhost 1234
> Connected to qiyaows.dyndns.org.
> 220 Service ready for new user.
> KERBEROS_V4 rejected as an authentication type
> Name (localhost:qiyao): qiyao
> 331 User name okay, need password for qiyao.
> Password:
> 230 User logged in, proceed.
> Remote system type is UNIX.
> ftp> bye
> 3.  Data race report from MTRAT.
> Data Race 71 : 680 : org/apache/ftpserver/FtpStatisticsImpl : currAnonLogins
>   Thread pool-1-thread-1 id: 13 : WRITE 
>        org.apache.ftpserver.FtpStatisticsImpl : setLogin : 303 
>        org.apache.ftpserver.command.PASS : execute : 205 
>        org.apache.ftpserver.DefaultFtpHandler : messageReceived : 79
>        org.apache.ftpserver.listener.mina.FtpHandlerAdapter : messageReceived 
> : 54
>        org.apache.mina.common.DefaultIoFilterChain$TailFilter : 
> messageReceived : 743
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
>        org.apache.mina.common.DefaultIoFilterChain : access$1200 : 40
>        org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1 : 
> messageReceived : 823
>        org.apache.mina.common.IoFilterEvent : fire : 54
>        org.apache.mina.filter.logging.MdcInjectionFilter : filter : 137 
>        org.apache.mina.filter.util.CommonEventFilter : messageReceived : 67
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
>        org.apache.mina.common.DefaultIoFilterChain : access$1200 : 40
>        org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1 : 
> messageReceived : 823
> .....
>   Thread pool-1-thread-4 id: 17 : READ 
>        org.apache.ftpserver.FtpStatisticsImpl : 
> getCurrentAnonymousLoginNumber : 191
>        org.apache.ftpserver.command.USER : execute : 95 
>        org.apache.ftpserver.DefaultFtpHandler : messageReceived : 79 
>        org.apache.ftpserver.listener.mina.FtpHandlerAdapter : messageReceived 
> : 54
>        org.apache.mina.common.DefaultIoFilterChain$TailFilter : 
> messageReceived : 743
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
>        org.apache.mina.common.DefaultIoFilterChain : access$1200 : 40 
>        org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1 : 
> messageReceived : 823
>        org.apache.mina.common.IoFilterEvent : fire : 54
>        org.apache.mina.filter.logging.MdcInjectionFilter : filter : 137
>        org.apache.mina.filter.util.CommonEventFilter : messageReceived : 67
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
> Data Race 72 : 680 : org/apache/ftpserver/FtpStatisticsImpl : currLogins
>   Thread pool-1-thread-1 id: 13 : WRITE
>        org.apache.ftpserver.FtpStatisticsImpl : setLogin : 299
>        org.apache.ftpserver.command.PASS : execute : 205
>        org.apache.ftpserver.DefaultFtpHandler : messageReceived : 79
>        org.apache.ftpserver.listener.mina.FtpHandlerAdapter : messageReceived 
> : 54
>        org.apache.mina.common.DefaultIoFilterChain$TailFilter : 
> messageReceived : 743
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
>        org.apache.mina.common.DefaultIoFilterChain : access$1200 : 40
>        org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1 : 
> messageReceived : 823
>        org.apache.mina.common.IoFilterEvent : fire : 54
>        org.apache.mina.filter.logging.MdcInjectionFilter : filter : 137
>        org.apache.mina.filter.util.CommonEventFilter : messageReceived : 67
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
> .....
>   Thread pool-1-thread-4 id: 17 : READ
>        org.apache.ftpserver.FtpStatisticsImpl : getCurrentLoginNumber : 177
>        org.apache.ftpserver.command.USER : execute : 103
>        org.apache.ftpserver.DefaultFtpHandler : messageReceived : 79
>        org.apache.ftpserver.listener.mina.FtpHandlerAdapter : messageReceived 
> : 54
>        org.apache.mina.common.DefaultIoFilterChain$TailFilter : 
> messageReceived : 743
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405
>        org.apache.mina.common.DefaultIoFilterChain : access$1200 : 40
>        org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1 : 
> messageReceived : 823
>        org.apache.mina.common.IoFilterEvent : fire : 54
>        org.apache.mina.filter.logging.MdcInjectionFilter : filter : 137
>        org.apache.mina.filter.util.CommonEventFilter : messageReceived : 67
>        org.apache.mina.common.DefaultIoFilterChain : callNextMessageReceived 
> : 405



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to