Program: 92028
Project: 92028
Buggy source:
public void parseGcdaRecord(DataInput stream) throws IOException, CoreException {
  int magic=0;
  GcnoFunction currentFnctn=null;
  magic=stream.readInt();
  if (magic == GCOV_DATA_MAGIC) {
    stream=new BEDataInputStream((DataInputStream)stream);
  }
 else {
    magic=(magic >> 16) | (magic << 16);
    magic=((magic & 0xff00ff) << 8) | ((magic >> 8) & 0xff00ff);
    if (magic == GCOV_DATA_MAGIC) {
      stream=new LEDataInputStream((DataInputStream)stream);
    }
 else {
      String message=magic + "String_Node_Str";
      Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
      throw new CoreException(status);
    }
  }
  int version=stream.readInt();
  stream.readInt();
  while (true) {
    try {
      int tag=stream.readInt();
      long length=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
switch (tag) {
case GCOV_TAG_FUNCTION:
{
          long fnctnId=stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK;
          if (!fnctns.isEmpty()) {
            boolean fnctnFound=false;
            for (            GcnoFunction f : fnctns) {
              if (f.getIdent() == fnctnId) {
                fnctnFound=true;
                currentFnctn=f;
                long fnctnChksm=stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK;
                if (f.getCheksum() != fnctnChksm) {
                  String message="String_Node_Str" + currentFnctn.getName() + "String_Node_Str"+ fnctnId+ "String_Node_Str";
                  Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
                  throw new CoreException(status);
                }
                if (version >= 875575082) {
                  stream.readInt();
                }
                break;
              }
            }
            if (fnctnFound == false) {
              currentFnctn=null;
              String message="String_Node_Str" + fnctnId + "String_Node_Str";
              Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
              throw new CoreException(status);
            }
          }
          break;
        }
case GCOV_COUNTER_ARCS:
{
        if (currentFnctn == null) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        if (length != 2 * (currentFnctn.getNumCounts())) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        ArrayList<Block> fnctnBlcks=currentFnctn.getFunctionBlocks();
        if (fnctnBlcks.isEmpty()) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        for (int i=0; i < fnctnBlcks.size(); i++) {
          Block b=fnctnBlcks.get(i);
          int nonFakeExit=0;
          ArrayList<Arc> arcsExit=b.getExitArcs();
          for (          Arc extArc : arcsExit) {
            if (extArc.isFake() == false)             nonFakeExit++;
            if (extArc.isOnTree() == false) {
              long arcsCnts=stream.readLong();
              extArc.setCount(arcsCnts);
              extArc.setCountValid(true);
              b.decNumSuccs();
              extArc.getDstnatnBlock().decNumPreds();
            }
          }
          if (nonFakeExit == 1) {
            for (            Arc extArc : arcsExit) {
              if (extArc.isFake() == false) {
                extArc.setUnconditionnal(true);
                if (b.isCallSite() == true && extArc.isFallthrough() == true && extArc.getDstnatnBlock().getEntryArcs().get(0).equals(extArc) && extArc.getDstnatnBlock().getEntryArcs().size() == 1)                 extArc.getDstnatnBlock().setCallReturn(true);
              }
            }
          }
        }
        currentFnctn=null;
        break;
      }
case GCOV_TAG_OBJECT_SYMMARY:
{
      objSmryChksm=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmryArcCnts=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmryNbrPgmRuns=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmrytotalCnts=stream.readLong();
      objSmryRunMax=stream.readLong();
      objSmrySumMax=stream.readLong();
      break;
    }
case GCOV_TAG_PROGRAM_SUMMARY:
{
    pgmSmryChksm=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
    for (int i=0; i < length - 1; i++) {
      stream.readInt();
    }
    break;
  }
default :
{
  break;
}
}
}
 catch (EOFException _) {
break;
}
}
}

Fixed version (ground truth):
public void parseGcdaRecord(DataInput stream) throws IOException, CoreException {
  int magic=0;
  GcnoFunction currentFnctn=null;
  magic=stream.readInt();
  if (magic == GCOV_DATA_MAGIC) {
    stream=new BEDataInputStream((DataInputStream)stream);
  }
 else {
    magic=(magic >> 16) | (magic << 16);
    magic=((magic & 0xff00ff) << 8) | ((magic >> 8) & 0xff00ff);
    if (magic == GCOV_DATA_MAGIC) {
      stream=new LEDataInputStream((DataInputStream)stream);
    }
 else {
      String message=magic + "String_Node_Str";
      Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
      throw new CoreException(status);
    }
  }
  int version=stream.readInt();
  stream.readInt();
  while (true) {
    try {
      int tag=stream.readInt();
      if (tag == 0) {
        continue;
      }
      long length=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
switch (tag) {
case GCOV_TAG_FUNCTION:
{
          long fnctnId=stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK;
          if (!fnctns.isEmpty()) {
            boolean fnctnFound=false;
            for (            GcnoFunction f : fnctns) {
              if (f.getIdent() == fnctnId) {
                fnctnFound=true;
                currentFnctn=f;
                long fnctnChksm=stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK;
                if (f.getCheksum() != fnctnChksm) {
                  String message="String_Node_Str" + currentFnctn.getName() + "String_Node_Str"+ fnctnId+ "String_Node_Str";
                  Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
                  throw new CoreException(status);
                }
                if (version >= 875575082) {
                  stream.readInt();
                }
                break;
              }
            }
            if (fnctnFound == false) {
              currentFnctn=null;
              String message="String_Node_Str" + fnctnId + "String_Node_Str";
              Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
              throw new CoreException(status);
            }
          }
          break;
        }
case GCOV_COUNTER_ARCS:
{
        if (currentFnctn == null) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        if (length != 2 * (currentFnctn.getNumCounts())) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        ArrayList<Block> fnctnBlcks=currentFnctn.getFunctionBlocks();
        if (fnctnBlcks.isEmpty()) {
          String message="String_Node_Str";
          Status status=new Status(IStatus.ERROR,Activator.PLUGIN_ID,message);
          throw new CoreException(status);
        }
        for (int i=0; i < fnctnBlcks.size(); i++) {
          Block b=fnctnBlcks.get(i);
          int nonFakeExit=0;
          ArrayList<Arc> arcsExit=b.getExitArcs();
          for (          Arc extArc : arcsExit) {
            if (extArc.isFake() == false)             nonFakeExit++;
            if (extArc.isOnTree() == false) {
              long arcsCnts=stream.readLong();
              extArc.setCount(arcsCnts);
              extArc.setCountValid(true);
              b.decNumSuccs();
              extArc.getDstnatnBlock().decNumPreds();
            }
          }
          if (nonFakeExit == 1) {
            for (            Arc extArc : arcsExit) {
              if (extArc.isFake() == false) {
                extArc.setUnconditionnal(true);
                if (b.isCallSite() == true && extArc.isFallthrough() == true && extArc.getDstnatnBlock().getEntryArcs().get(0).equals(extArc) && extArc.getDstnatnBlock().getEntryArcs().size() == 1)                 extArc.getDstnatnBlock().setCallReturn(true);
              }
            }
          }
        }
        currentFnctn=null;
        break;
      }
case GCOV_TAG_OBJECT_SYMMARY:
{
      objSmryChksm=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmryArcCnts=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmryNbrPgmRuns=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
      objSmrytotalCnts=stream.readLong();
      objSmryRunMax=stream.readLong();
      objSmrySumMax=stream.readLong();
      break;
    }
case GCOV_TAG_PROGRAM_SUMMARY:
{
    pgmSmryChksm=(stream.readInt() & MasksGenerator.UNSIGNED_INT_MASK);
    for (int i=0; i < length - 1; i++) {
      stream.readInt();
    }
    break;
  }
default :
{
  break;
}
}
}
 catch (EOFException _) {
break;
}
}
}