Program: 608
Project: 608
Buggy source:
static void dumpProcessPss(PrintWriter pw,String prefix,ProcessState proc,int[] screenStates,int[] memStates,int[] procStates){
  boolean printedHeader=false;
  int printedScreen=-1;
  for (int is=0; is < screenStates.length; is++) {
    int printedMem=-1;
    for (int im=0; im < memStates.length; im++) {
      for (int ip=0; ip < procStates.length; ip++) {
        final int iscreen=screenStates[is];
        final int imem=memStates[im];
        final int bucket=((iscreen + imem) * STATE_COUNT) + procStates[ip];
        long count=proc.getPssSampleCount(bucket);
        if (count > 0) {
          if (!printedHeader) {
            pw.print(prefix);
            pw.print("String_Node_Str");
            pw.print(proc.mPssTableSize);
            pw.println("String_Node_Str");
            printedHeader=true;
          }
          pw.print(prefix);
          pw.print("String_Node_Str");
          if (screenStates.length > 1) {
            printScreenLabel(pw,printedScreen != iscreen ? iscreen : STATE_NOTHING);
            printedScreen=iscreen;
          }
          if (memStates.length > 1) {
            printMemLabel(pw,printedMem != imem ? imem : STATE_NOTHING);
            printedMem=imem;
          }
          pw.print(STATE_NAMES[procStates[ip]]);
          pw.print("String_Node_Str");
          pw.print(count);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssMinimum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssAverage(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssMaximum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssMinimum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssAverage(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssMaximum(bucket) * 1024);
          pw.println();
        }
      }
    }
  }
  if (proc.mNumExcessiveWake != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumExcessiveWake);
    pw.println("String_Node_Str");
  }
  if (proc.mNumExcessiveCpu != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumExcessiveCpu);
    pw.println("String_Node_Str");
  }
  if (proc.mNumCachedKill != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumCachedKill);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mMinCachedKillPss * 1024);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mAvgCachedKillPss * 1024);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mMaxCachedKillPss * 1024);
    pw.println();
  }
}

Fixed version (ground truth):
static void dumpProcessPss(PrintWriter pw,String prefix,ProcessState proc,int[] screenStates,int[] memStates,int[] procStates){
  boolean printedHeader=false;
  int printedScreen=-1;
  for (int is=0; is < screenStates.length; is++) {
    int printedMem=-1;
    for (int im=0; im < memStates.length; im++) {
      for (int ip=0; ip < procStates.length; ip++) {
        final int iscreen=screenStates[is];
        final int imem=memStates[im];
        final int bucket=((iscreen + imem) * STATE_COUNT) + procStates[ip];
        long count=proc.getPssSampleCount(bucket);
        if (count > 0) {
          if (!printedHeader) {
            pw.print(prefix);
            pw.print("String_Node_Str");
            pw.print(proc.mPssTableSize);
            pw.println("String_Node_Str");
            printedHeader=true;
          }
          pw.print(prefix);
          pw.print("String_Node_Str");
          if (screenStates.length > 1) {
            printScreenLabel(pw,printedScreen != iscreen ? iscreen : STATE_NOTHING);
            printedScreen=iscreen;
          }
          if (memStates.length > 1) {
            printMemLabel(pw,printedMem != imem ? imem : STATE_NOTHING,'/');
            printedMem=imem;
          }
          pw.print(STATE_NAMES[procStates[ip]]);
          pw.print("String_Node_Str");
          pw.print(count);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssMinimum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssAverage(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssMaximum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssMinimum(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssAverage(bucket) * 1024);
          pw.print("String_Node_Str");
          printSizeValue(pw,proc.getPssUssMaximum(bucket) * 1024);
          pw.println();
        }
      }
    }
  }
  if (proc.mNumExcessiveWake != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumExcessiveWake);
    pw.println("String_Node_Str");
  }
  if (proc.mNumExcessiveCpu != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumExcessiveCpu);
    pw.println("String_Node_Str");
  }
  if (proc.mNumCachedKill != 0) {
    pw.print(prefix);
    pw.print("String_Node_Str");
    pw.print(proc.mNumCachedKill);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mMinCachedKillPss * 1024);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mAvgCachedKillPss * 1024);
    pw.print("String_Node_Str");
    printSizeValue(pw,proc.mMaxCachedKillPss * 1024);
    pw.println();
  }
}