Program: 172294
Project: 172294
Buggy source:
/** 
 * Start the SMB server.
 */
public void run(){
  if (logger.isDebugEnabled() && hasDebug()) {
    logger.debug("String_Node_Str" + getPort());
    if (getCharacterSet() != null)     logger.debug("String_Node_Str" + getCharacterSet());
  }
  try {
    if (hasBindAddress())     m_srvSock=new ServerSocket(getPort(),LISTEN_BACKLOG,getBindAddress());
 else     m_srvSock=new ServerSocket(getPort(),LISTEN_BACKLOG);
    if (logger.isDebugEnabled() && hasDebug()) {
      String ftpAddr="String_Node_Str";
      if (hasBindAddress())       ftpAddr=getBindAddress().getHostAddress();
      logger.debug("String_Node_Str" + ftpAddr);
    }
    if (hasBindAddress())     m_localFTPaddress=getBindAddress().getHostAddress().replace('.',',');
    setActive(true);
    fireServerEvent(ServerListener.ServerActive);
    while (hasShutdown() == false) {
      Socket sessSock=getSocket().accept();
      if (m_localFTPaddress == null) {
        if (sessSock.getLocalAddress() != null)         m_localFTPaddress=sessSock.getLocalAddress().getHostAddress().replace('.',',');
      }
      sessSock.setTcpNoDelay(true);
      if (logger.isDebugEnabled() && hasDebug())       logger.debug("String_Node_Str" + sessSock.getInetAddress().getHostAddress());
      FTPSrvSession srvSess=new FTPSrvSession(sessSock,this);
      srvSess.setSessionId(getNextSessionId());
      srvSess.setUniqueId("String_Node_Str" + srvSess.getSessionId());
      srvSess.setDebugPrefix("String_Node_Str" + srvSess.getSessionId() + "String_Node_Str");
      if (hasRootPath())       srvSess.setRootPath(getRootPath());
      addSession(srvSess);
      fireSessionOpenEvent(srvSess);
      Thread srvThread=new Thread(THREAD_GROUP_SESSION,srvSess);
      srvThread.setDaemon(true);
      srvThread.setName("String_Node_Str" + srvSess.getSessionId() + "String_Node_Str"+ sessSock.getInetAddress().getHostAddress());
      srvThread.start();
      try {
        Thread.sleep(1000L);
      }
 catch (      InterruptedException ex) {
      }
    }
  }
 catch (  SocketException ex) {
    if (hasShutdown() == false) {
      logger.error("String_Node_Str",ex);
      setException(ex);
      fireServerEvent(ServerListener.ServerError);
    }
  }
catch (  Exception ex) {
    if (hasShutdown() == false) {
      logger.error("String_Node_Str",ex);
    }
    setException(ex);
    fireServerEvent(ServerListener.ServerError);
  }
  Enumeration enm=m_sessions.enumerate();
  while (enm.hasMoreElements()) {
    Integer sessId=(Integer)enm.nextElement();
    FTPSrvSession sess=m_sessions.findSession(sessId);
    if (logger.isDebugEnabled() && hasDebug())     logger.debug("String_Node_Str" + sess.getSessionId());
    sess.closeSession();
  }
  if (logger.isDebugEnabled() && hasDebug())   logger.debug("String_Node_Str");
  setActive(false);
  fireServerEvent(ServerListener.ServerShutdown);
}

Fixed version (ground truth):
/** 
 * Start the SMB server.
 */
public void run(){
  if (logger.isDebugEnabled() && hasDebug()) {
    logger.debug("String_Node_Str" + getPort());
    if (getCharacterSet() != null)     logger.debug("String_Node_Str" + getCharacterSet());
  }
  try {
    if (hasBindAddress())     m_srvSock=new ServerSocket(getPort(),LISTEN_BACKLOG,getBindAddress());
 else     m_srvSock=new ServerSocket(getPort(),LISTEN_BACKLOG);
    if (logger.isDebugEnabled() && hasDebug()) {
      String ftpAddr="String_Node_Str";
      if (hasBindAddress())       ftpAddr=getBindAddress().getHostAddress();
      logger.debug("String_Node_Str" + ftpAddr);
    }
    if (hasBindAddress())     m_localFTPaddress=getBindAddress().getHostAddress().replace('.',',');
    setActive(true);
    fireServerEvent(ServerListener.ServerActive);
    while (hasShutdown() == false) {
      Socket sessSock=getSocket().accept();
      if (m_localFTPaddress == null) {
        if (sessSock.getLocalAddress() != null)         m_localFTPaddress=sessSock.getLocalAddress().getHostAddress().replace('.',',');
      }
      sessSock.setTcpNoDelay(true);
      if (logger.isDebugEnabled() && hasDebug())       logger.debug("String_Node_Str" + sessSock.getInetAddress().getHostAddress());
      FTPSrvSession srvSess=new FTPSrvSession(sessSock,this);
      srvSess.setSessionId(getNextSessionId());
      srvSess.setUniqueId("String_Node_Str" + srvSess.getSessionId());
      if (hasRootPath())       srvSess.setRootPath(getRootPath());
      addSession(srvSess);
      fireSessionOpenEvent(srvSess);
      Thread srvThread=new Thread(THREAD_GROUP_SESSION,srvSess);
      srvThread.setDaemon(true);
      srvThread.setName("String_Node_Str" + srvSess.getSessionId() + "String_Node_Str"+ sessSock.getInetAddress().getHostAddress());
      srvThread.start();
      try {
        Thread.sleep(1000L);
      }
 catch (      InterruptedException ex) {
      }
    }
  }
 catch (  SocketException ex) {
    if (hasShutdown() == false) {
      logger.error("String_Node_Str",ex);
      setException(ex);
      fireServerEvent(ServerListener.ServerError);
    }
  }
catch (  Exception ex) {
    if (hasShutdown() == false) {
      logger.error("String_Node_Str",ex);
    }
    setException(ex);
    fireServerEvent(ServerListener.ServerError);
  }
  Enumeration enm=m_sessions.enumerate();
  while (enm.hasMoreElements()) {
    Integer sessId=(Integer)enm.nextElement();
    FTPSrvSession sess=m_sessions.findSession(sessId);
    if (logger.isDebugEnabled() && hasDebug())     logger.debug("String_Node_Str" + sess.getSessionId());
    sess.closeSession();
  }
  if (logger.isDebugEnabled() && hasDebug())   logger.debug("String_Node_Str");
  setActive(false);
  fireServerEvent(ServerListener.ServerShutdown);
}