Program: 86137
Project: 86137
Buggy source:
public static void loadArenaFromFileSYNC(final JavaPlugin plugin,final Arena arena){
  int failcount=0;
  final ArrayList<ArenaBlock> failedblocks=new ArrayList<ArenaBlock>();
  File f=new File(plugin.getDataFolder() + "String_Node_Str" + arena.getName());
  FileInputStream fis=null;
  BukkitObjectInputStream ois=null;
  try {
    fis=new FileInputStream(f);
    ois=new BukkitObjectInputStream(fis);
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  try {
    while (true) {
      Object b=null;
      try {
        b=ois.readObject();
      }
 catch (      EOFException e) {
        MinigamesAPI.getAPI().getLogger().info("String_Node_Str" + arena.getName() + "String_Node_Str");
        arena.setArenaState(ArenaState.JOIN);
        Bukkit.getScheduler().runTask(plugin,new Runnable(){
          public void run(){
            Util.updateSign(plugin,arena);
          }
        }
);
      }
      if (b != null) {
        ArenaBlock ablock=(ArenaBlock)b;
        try {
          if (!ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation()).getType().toString().equalsIgnoreCase(ablock.getMaterial().toString())) {
            ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation()).setType(ablock.getMaterial());
          }
        }
 catch (        IllegalStateException e) {
          failcount+=1;
          failedblocks.add(ablock);
        }
      }
 else {
        break;
      }
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
catch (  ClassNotFoundException e) {
    e.printStackTrace();
  }
  try {
    ois.close();
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(MinigamesAPI.getAPI(),new Runnable(){
    public void run(){
      for (      ArenaBlock ablock : failedblocks) {
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).setType(Material.WOOL);
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).getTypeId();
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).setType(ablock.getMaterial());
      }
    }
  }
,40L);
  MinigamesAPI.getAPI().getLogger().info("String_Node_Str");
  return;
}

Fixed version (ground truth):
public static void loadArenaFromFileSYNC(final JavaPlugin plugin,final Arena arena){
  int failcount=0;
  final ArrayList<ArenaBlock> failedblocks=new ArrayList<ArenaBlock>();
  File f=new File(plugin.getDataFolder() + "String_Node_Str" + arena.getName());
  if (!f.exists()) {
    plugin.getLogger().warning("String_Node_Str" + arena.getName());
    arena.setArenaState(ArenaState.JOIN);
    Bukkit.getScheduler().runTask(plugin,new Runnable(){
      public void run(){
        Util.updateSign(plugin,arena);
      }
    }
);
    return;
  }
  FileInputStream fis=null;
  BukkitObjectInputStream ois=null;
  try {
    fis=new FileInputStream(f);
    ois=new BukkitObjectInputStream(fis);
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  try {
    while (true) {
      Object b=null;
      try {
        b=ois.readObject();
      }
 catch (      EOFException e) {
        MinigamesAPI.getAPI().getLogger().info("String_Node_Str" + arena.getName() + "String_Node_Str");
        arena.setArenaState(ArenaState.JOIN);
        Bukkit.getScheduler().runTask(plugin,new Runnable(){
          public void run(){
            Util.updateSign(plugin,arena);
          }
        }
);
      }
      if (b != null) {
        ArenaBlock ablock=(ArenaBlock)b;
        try {
          if (!ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation()).getType().toString().equalsIgnoreCase(ablock.getMaterial().toString())) {
            ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation()).setType(ablock.getMaterial());
          }
        }
 catch (        IllegalStateException e) {
          failcount+=1;
          failedblocks.add(ablock);
        }
      }
 else {
        break;
      }
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
catch (  ClassNotFoundException e) {
    e.printStackTrace();
  }
  try {
    ois.close();
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
  Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(MinigamesAPI.getAPI(),new Runnable(){
    public void run(){
      for (      ArenaBlock ablock : failedblocks) {
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).setType(Material.WOOL);
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).getTypeId();
        Bukkit.getServer().getWorld(ablock.world).getBlockAt(new Location(Bukkit.getServer().getWorld(ablock.world),ablock.x,ablock.y,ablock.z)).setType(ablock.getMaterial());
      }
    }
  }
,40L);
  MinigamesAPI.getAPI().getLogger().info("String_Node_Str");
  return;
}