Program: 50447
Project: 50447
Buggy source:
public static void main(String[] args){
  if (args != null && args.length > 0) {
    for (    String arg : args) {
      arg=arg.trim();
      if (arg.startsWith("String_Node_Str")) {
        THREAD_COUNT=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        ENTRY_COUNT=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        VALUE_SIZE=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        GET_PERCENTAGE=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        PUT_PERCENTAGE=Integer.parseInt(arg.substring(1));
      }
    }
  }
 else {
    System.out.println("String_Node_Str");
    System.out.println("String_Node_Str");
    System.out.println("String_Node_Str");
  }
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str" + THREAD_COUNT);
  System.out.println("String_Node_Str" + ENTRY_COUNT);
  System.out.println("String_Node_Str" + VALUE_SIZE);
  System.out.println("String_Node_Str" + GET_PERCENTAGE);
  System.out.println("String_Node_Str" + PUT_PERCENTAGE);
  System.out.println("String_Node_Str" + (100 - (PUT_PERCENTAGE + GET_PERCENTAGE)));
  ExecutorService es=Executors.newFixedThreadPool(THREAD_COUNT);
  for (int i=0; i < THREAD_COUNT; i++) {
    es.submit(new Runnable(){
      public void run(){
        IMap<String,byte[]> map=Hazelcast.getMap("String_Node_Str");
        while (true) {
          int key=(int)(Math.random() * ENTRY_COUNT);
          int operation=((int)(Math.random() * 100));
          if (operation < GET_PERCENTAGE) {
            map.get(String.valueOf(key));
          }
 else           if (operation < GET_PERCENTAGE + PUT_PERCENTAGE) {
            map.put(String.valueOf(key),new byte[VALUE_SIZE]);
          }
 else {
            map.remove(String.valueOf(key));
          }
        }
      }
    }
);
  }
  Executors.newSingleThreadExecutor().submit(new Runnable(){
    public void run(){
      while (true) {
        try {
          Thread.sleep(STATS_SECONDS * 1000);
          System.out.println("String_Node_Str" + Hazelcast.getCluster().getMembers().size());
          IMap<String,byte[]> map=Hazelcast.getMap("String_Node_Str");
          MapOperationStats mapOpStats=map.getLocalMapStats().getOperationStats();
          long period=((mapOpStats.getPeriodEnd() - mapOpStats.getPeriodStart()) / 1000);
          if (period == 0) {
            continue;
          }
          System.out.println(mapOpStats);
          System.out.println("String_Node_Str" + mapOpStats.total() / period);
        }
 catch (        Exception ignored) {
        }
      }
    }
  }
);
}

Fixed version (ground truth):
public static void main(String[] args){
  if (args != null && args.length > 0) {
    for (    String arg : args) {
      arg=arg.trim();
      if (arg.startsWith("String_Node_Str")) {
        THREAD_COUNT=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        ENTRY_COUNT=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        VALUE_SIZE=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        GET_PERCENTAGE=Integer.parseInt(arg.substring(1));
      }
 else       if (arg.startsWith("String_Node_Str")) {
        PUT_PERCENTAGE=Integer.parseInt(arg.substring(1));
      }
    }
  }
 else {
    System.out.println("String_Node_Str");
    System.out.println("String_Node_Str");
    System.out.println("String_Node_Str");
  }
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str" + THREAD_COUNT);
  System.out.println("String_Node_Str" + ENTRY_COUNT);
  System.out.println("String_Node_Str" + VALUE_SIZE);
  System.out.println("String_Node_Str" + GET_PERCENTAGE);
  System.out.println("String_Node_Str" + PUT_PERCENTAGE);
  System.out.println("String_Node_Str" + (100 - (PUT_PERCENTAGE + GET_PERCENTAGE)));
  ExecutorService es=Executors.newFixedThreadPool(THREAD_COUNT);
  for (int i=0; i < THREAD_COUNT; i++) {
    es.submit(new Runnable(){
      public void run(){
        IMap<String,byte[]> map=Hazelcast.getMap("String_Node_Str");
        while (true) {
          int key=(int)(Math.random() * ENTRY_COUNT);
          int operation=((int)(Math.random() * 100));
          if (operation < GET_PERCENTAGE) {
            map.get(String.valueOf(key));
          }
 else           if (operation < GET_PERCENTAGE + PUT_PERCENTAGE) {
            map.put(String.valueOf(key),new byte[VALUE_SIZE]);
          }
 else {
            map.remove(String.valueOf(key));
          }
        }
      }
    }
);
  }
  Executors.newSingleThreadExecutor().submit(new Runnable(){
    public void run(){
      while (true) {
        try {
          Thread.sleep(STATS_SECONDS * 1000);
          System.out.println("String_Node_Str" + Hazelcast.getCluster().getMembers().size());
          IMap<String,byte[]> map=Hazelcast.getMap("String_Node_Str");
          MapOperationStats mapOpStats=map.getLocalMapStats().getOperationStats();
          long period=((mapOpStats.getPeriodEnd() - mapOpStats.getPeriodStart()) / 1000);
          if (period == 0) {
            continue;
          }
          System.out.println(mapOpStats);
          System.out.println("String_Node_Str" + mapOpStats.total() / period);
        }
 catch (        InterruptedException ignored) {
          return;
        }
      }
    }
  }
);
}