Program: 78177
Project: 78177
Buggy source:
@Override public void go(){
  boolean doLoop=true;
  this.hashBegin=System.currentTimeMillis();
  this.parent.hasherCount.getAndIncrement();
  byte[] byteBase=null;
  MessageDigest sha512=null;
  try {
    sha512=MessageDigest.getInstance("String_Node_Str");
  }
 catch (  NoSuchAlgorithmException e1) {
    System.err.println("String_Node_Str");
    e1.printStackTrace();
    active=false;
    doLoop=false;
  }
  if (active) {
    parent.workerInit(id);
  }
  long statCycle=0l;
  long statBegin=0l;
  long statArgonBegin=0l;
  long statArgonEnd=0l;
  long statShaBegin=0l;
  long statShaEnd=0l;
  long statEnd=0l;
  try {
    boolean bound=true;
    while (doLoop && active) {
      statCycle=System.currentTimeMillis();
      statBegin=System.nanoTime();
      try {
        if (nonces.size() <= 0) {
          for (int i=0; i < 15; i++) {
            nonces.add(genNonce());
          }
        }
        Nonce nonce=nonces.get(0);
        statArgonBegin=System.nanoTime();
        String base=nonce.getNonce();
        EncodedArgon2Result result=context.argon2_hash(base.getBytes());
        argos++;
        String hash=result.getEncoded();
        String hashed_done=base + hash;
        temporaryHashBuffer=hashed_done.getBytes();
        statShaBegin=System.nanoTime();
        byteBase=sha512.digest(temporaryHashBuffer);
        for (int i=0; i < 5; i++) {
          byteBase=sha512.digest(byteBase);
        }
        statShaEnd=System.nanoTime();
        StringBuilder duration=new StringBuilder(25);
        duration.append(byteBase[10] & 0xFF).append(byteBase[15] & 0xFF).append(byteBase[20] & 0xFF).append(byteBase[23] & 0xFF).append(byteBase[31] & 0xFF).append(byteBase[40] & 0xFF).append(byteBase[45] & 0xFF).append(byteBase[55] & 0xFF);
        long finalDuration=new BigInteger(duration.toString()).divide(this.difficulty).longValue();
        if (finalDuration > 4000000)         nonces.remove(nonce);
 else         sharePool.add(new Share(nonce.getNonceRaw(),hash,difficulty.longValue(),finalDuration));
        if (finalDuration < Miner.finalDuration) {
          Miner.finalDuration=finalDuration;
          caller.onDLChange(this.parent.speed(),finalDuration);
        }
        Miner.limitDuration=this.limit;
        caller.onDurChange(finalDuration + "String_Node_Str");
        if (finalDuration <= this.limit) {
          System.out.println("String_Node_Str");
          parent.submit(nonce.getNonceRaw(),hash,finalDuration,this.difficulty.longValue(),this.getType());
          if (finalDuration <= 240) {
            finds++;
            caller.onFind(finalDuration + "String_Node_Str");
            System.out.println("String_Node_Str");
          }
 else {
            shares++;
            System.out.println("String_Node_Str");
            caller.onShare(finalDuration + "String_Node_Str");
          }
          argos=0;
        }
        if (argos > 135) {
          argos=0;
          System.out.println("String_Node_Str");
          doLoop=false;
          this.hashEnd=System.currentTimeMillis();
          this.hashTime=this.hashEnd - this.hashBegin;
          this.hashBegin=System.currentTimeMillis();
          completeSession();
          this.loopTime=0l;
        }
        hashCount++;
        statEnd=System.nanoTime();
        if (finalDuration < this.bestDL) {
          this.bestDL=finalDuration;
        }
        this.argonTime+=statArgonEnd - statArgonBegin;
        this.shaTime+=statShaEnd - statShaBegin;
        this.nonArgonTime+=(statArgonBegin - statBegin) + (statEnd - statArgonEnd);
      }
 catch (      Exception e) {
        System.err.println("String_Node_Str" + e.getMessage() + "String_Node_Str"+ e.getStackTrace()[0]);
        e.printStackTrace();
        doLoop=false;
      }
      this.loopTime+=System.currentTimeMillis() - statCycle;
      if (this.hashCount > this.targetHashCount || this.loopTime > this.maxTime) {
        if (!bound) {
          doLoop=false;
        }
 else {
          this.hashEnd=System.currentTimeMillis();
          this.hashTime=this.hashEnd - this.hashBegin;
          this.hashBegin=System.currentTimeMillis();
          completeSession();
          this.loopTime=0l;
        }
      }
    }
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  System.gc();
  Runtime.getRuntime().gc();
  this.hashEnd=System.currentTimeMillis();
  this.hashTime=this.hashEnd - this.hashBegin;
  this.parent.hasherCount.decrementAndGet();
}

Fixed version (ground truth):
@Override public void go(){
  boolean doLoop=true;
  this.hashBegin=System.currentTimeMillis();
  this.parent.hasherCount.getAndIncrement();
  byte[] byteBase=null;
  MessageDigest sha512=null;
  try {
    sha512=MessageDigest.getInstance("String_Node_Str");
  }
 catch (  NoSuchAlgorithmException e1) {
    System.err.println("String_Node_Str");
    e1.printStackTrace();
    active=false;
    doLoop=false;
  }
  if (active) {
    parent.workerInit(id);
  }
  long statCycle=0l;
  long statBegin=0l;
  long statArgonBegin=0l;
  long statArgonEnd=0l;
  long statShaBegin=0l;
  long statShaEnd=0l;
  long statEnd=0l;
  try {
    boolean bound=true;
    while (doLoop && active) {
      statCycle=System.currentTimeMillis();
      statBegin=System.nanoTime();
      try {
        if (nonces.size() <= 0) {
          for (int i=0; i < 35; i++) {
            nonces.add(genNonce());
          }
        }
        Nonce nonce=nonces.get(0);
        statArgonBegin=System.nanoTime();
        String base=nonce.getNonce();
        EncodedArgon2Result result=context.argon2_hash(base.getBytes());
        String hash=result.getEncoded();
        String hashed_done=base + hash;
        temporaryHashBuffer=hashed_done.getBytes();
        statShaBegin=System.nanoTime();
        byteBase=sha512.digest(temporaryHashBuffer);
        for (int i=0; i < 5; i++) {
          byteBase=sha512.digest(byteBase);
        }
        statShaEnd=System.nanoTime();
        StringBuilder duration=new StringBuilder(25);
        duration.append(byteBase[10] & 0xFF).append(byteBase[15] & 0xFF).append(byteBase[20] & 0xFF).append(byteBase[23] & 0xFF).append(byteBase[31] & 0xFF).append(byteBase[40] & 0xFF).append(byteBase[45] & 0xFF).append(byteBase[55] & 0xFF);
        long finalDuration=new BigInteger(duration.toString()).divide(this.difficulty).longValue();
        if (finalDuration > 10000000)         nonces.remove(nonce);
 else         sharePool.add(new Share(nonce.getNonceRaw(),hash,difficulty.longValue(),finalDuration));
        if (finalDuration < Miner.finalDuration) {
          Miner.finalDuration=finalDuration;
          caller.onDLChange(this.parent.speed(),finalDuration);
        }
        Miner.limitDuration=this.limit;
        caller.onDurChange(finalDuration + "String_Node_Str");
        if (finalDuration <= this.limit) {
          System.out.println("String_Node_Str");
          parent.submit(nonce.getNonceRaw(),hash,finalDuration,this.difficulty.longValue(),this.getType());
          if (finalDuration <= 240) {
            finds++;
            caller.onFind(finalDuration + "String_Node_Str");
            System.out.println("String_Node_Str");
          }
 else {
            shares++;
            System.out.println("String_Node_Str");
            caller.onShare(finalDuration + "String_Node_Str");
          }
        }
        hashCount++;
        statEnd=System.nanoTime();
        if (finalDuration < this.bestDL) {
          this.bestDL=finalDuration;
        }
        this.argonTime+=statArgonEnd - statArgonBegin;
        this.shaTime+=statShaEnd - statShaBegin;
        this.nonArgonTime+=(statArgonBegin - statBegin) + (statEnd - statArgonEnd);
      }
 catch (      Exception e) {
        System.err.println("String_Node_Str" + e.getMessage() + "String_Node_Str"+ e.getStackTrace()[0]);
        e.printStackTrace();
        doLoop=false;
      }
      this.loopTime+=System.currentTimeMillis() - statCycle;
      if (this.hashCount > this.targetHashCount || this.loopTime > this.maxTime) {
        if (!bound) {
          doLoop=false;
        }
 else {
          this.hashEnd=System.currentTimeMillis();
          this.hashTime=this.hashEnd - this.hashBegin;
          this.hashBegin=System.currentTimeMillis();
          completeSession();
          this.loopTime=0l;
        }
      }
    }
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  System.gc();
  Runtime.getRuntime().gc();
  this.hashEnd=System.currentTimeMillis();
  this.hashTime=this.hashEnd - this.hashBegin;
  this.parent.hasherCount.decrementAndGet();
}