Program: 155371
Project: 155371
Buggy source:
private void burstBomb(final Bomb bomb,final ServerThread thread){
  new Thread(new Runnable(){
    public void run(){
      try {
        ArrayList<Integer> bomb_position=new ArrayList<Integer>();
        bomb_position.add(bomb.getX());
        bomb_position.add(bomb.getY());
        Thread.sleep(bomb.getSleepingTime());
        HashMap<Integer,ServerThread> players_threads=Server.getPlayersThreads();
        for (int i=1; i < Server.board.getCols() - 1; i++) {
          int index=i + Server.board.getCols() * bomb.getY();
          Element element=Server.board.getElements().get(index);
          if (element != null) {
            element.setActive(false);
          }
          for (          ServerThread thread : players_threads.values()) {
            if (thread.getPostionX() == i && thread.getPositionY() == bomb.getY()) {
              Server.killPlayer(thread.getClientId());
            }
          }
        }
        for (int i=1; i < Server.board.getRows() - 1; i++) {
          int index=bomb.getX() + Server.board.getCols() * i;
          Element element=Server.board.getElements().get(index);
          if (element != null) {
            element.setActive(false);
          }
          for (          ServerThread thread : players_threads.values()) {
            if (thread.getPostionX() == bomb.getX() && thread.getPositionY() == i) {
              Server.killPlayer(thread.getClientId());
            }
          }
        }
        Server.sendAll("String_Node_Str",bomb_position);
        thread.nb_bombs--;
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
).start();
}

Fixed version (ground truth):
private void burstBomb(final Bomb bomb){
  final ServerThread current_thread=this;
  new Thread(new Runnable(){
    public void run(){
      try {
        ArrayList<Integer> bomb_position=new ArrayList<Integer>();
        bomb_position.add(bomb.getX());
        bomb_position.add(bomb.getY());
        Thread.sleep(bomb.getSleepingTime());
        HashMap<Integer,ServerThread> players_threads=Server.getPlayersThreads();
        for (int i=1; i < Server.board.getCols() - 1; i++) {
          int index=i + Server.board.getCols() * bomb.getY();
          Element element=Server.board.getElements().get(index);
          if (element != null) {
            if (element instanceof Bomb) {
              Server.board.setElement(index,null);
            }
 else {
              element.setActive(false);
            }
          }
          for (          ServerThread thread : players_threads.values()) {
            if (thread.getPostionX() == i && thread.getPositionY() == bomb.getY()) {
              Server.killPlayer(thread.getClientId());
            }
          }
        }
        for (int i=1; i < Server.board.getRows() - 1; i++) {
          int index=bomb.getX() + Server.board.getCols() * i;
          Element element=Server.board.getElements().get(index);
          if (element != null) {
            if (element instanceof Bomb) {
              Server.board.setElement(index,null);
            }
 else {
              element.setActive(false);
            }
          }
          for (          ServerThread thread : players_threads.values()) {
            if (thread.getPostionX() == bomb.getX() && thread.getPositionY() == i) {
              Server.killPlayer(thread.getClientId());
            }
          }
        }
        Server.sendAll("String_Node_Str",bomb_position);
        current_thread.nb_bombs--;
      }
 catch (      InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
).start();
}