Program: 53124
Project: 53124
Buggy source:
private void generateSeries() throws IOException, FormatErrorException {
  activeProcessors.clear();
  for (int row=0; row < processorsListModel.getRowCount(); row++) {
    if ((Boolean)processorsListModel.getValueAt(row,0)) {
      activeProcessors.add((ProcessorPreset)processorsListModel.getValueAt(row,1));
    }
  }
  dataset.removeAllSeries();
  seriesIndex.clear();
  PlotProcessor[] processors=new PlotProcessor[activeProcessors.size()];
  long timeOffset=getTimeOffset(timeMode);
  Range range=getLogRange(timeMode);
  long timeStart=(long)((range.getLowerBound() - range.getLength()) * 1e6);
  long timeStop=(long)((range.getUpperBound() + range.getLength()) * 1e6);
  timeStart=Math.max(logReader.getStartMicroseconds(),timeStart);
  timeStop=Math.min(logReader.getStartMicroseconds() + logReader.getSizeMicroseconds(),timeStop);
  double timeScale=(selectDomainAxis(timeMode) == domainAxisDate) ? 1000.0 : 1.0;
  int displayPixels=2000;
  double skip=range.getLength() / displayPixels;
  if (processors.length > 0) {
    for (int i=0; i < activeProcessors.size(); i++) {
      ProcessorPreset pp=activeProcessors.get(i);
      PlotProcessor processor;
      try {
        processor=processorsTypesList.getProcessorInstance(pp,skip,logReader.getFields());
        processor.setFieldsList(logReader.getFields());
        processors[i]=processor;
      }
 catch (      Exception e) {
        e.printStackTrace();
      }
    }
    logReader.seek(timeStart);
    Map<String,Object> data=new HashMap<String,Object>();
    while (true) {
      long t;
      data.clear();
      try {
        t=logReader.readUpdate(data);
      }
 catch (      EOFException e) {
        break;
      }
      if (t > timeStop) {
        break;
      }
      for (      PlotProcessor processor : processors) {
        processor.process((t + timeOffset) * 1e-6,data);
      }
    }
    for (int i=0; i < activeProcessors.size(); i++) {
      PlotProcessor processor=processors[i];
      String processorTitle=activeProcessors.get(i).getTitle();
      Map<String,Integer> processorSeriesIndex=new HashMap<String,Integer>();
      seriesIndex.add(processorSeriesIndex);
      for (      Series series : processor.getSeriesList()) {
        processorSeriesIndex.put(series.getTitle(),dataset.getSeriesCount());
        XYSeries jseries=new XYSeries(series.getFullTitle(processorTitle),false);
        for (        XYPoint point : series) {
          jseries.add(point.x * timeScale,point.y,false);
        }
        dataset.addSeries(jseries);
      }
    }
    setChartColors();
    setChartMarkers();
  }
  chartPanel.repaint();
}

Fixed version (ground truth):
private void generateSeries() throws IOException, FormatErrorException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
  activeProcessors.clear();
  for (int row=0; row < processorsListModel.getRowCount(); row++) {
    if ((Boolean)processorsListModel.getValueAt(row,0)) {
      activeProcessors.add((ProcessorPreset)processorsListModel.getValueAt(row,1));
    }
  }
  dataset.removeAllSeries();
  seriesIndex.clear();
  PlotProcessor[] processors=new PlotProcessor[activeProcessors.size()];
  long timeOffset=getTimeOffset(timeMode);
  Range range=getLogRange(timeMode);
  long timeStart=(long)((range.getLowerBound() - range.getLength()) * 1e6);
  long timeStop=(long)((range.getUpperBound() + range.getLength()) * 1e6);
  timeStart=Math.max(logReader.getStartMicroseconds(),timeStart);
  timeStop=Math.min(logReader.getStartMicroseconds() + logReader.getSizeMicroseconds(),timeStop);
  double timeScale=(selectDomainAxis(timeMode) == domainAxisDate) ? 1000.0 : 1.0;
  int displayPixels=2000;
  double skip=range.getLength() / displayPixels;
  if (processors.length > 0) {
    for (int i=0; i < activeProcessors.size(); i++) {
      ProcessorPreset pp=activeProcessors.get(i);
      PlotProcessor processor;
      processor=processorsTypesList.getProcessorInstance(pp,skip,logReader.getFields());
      processor.setFieldsList(logReader.getFields());
      processors[i]=processor;
    }
    logReader.seek(timeStart);
    Map<String,Object> data=new HashMap<String,Object>();
    while (true) {
      long t;
      data.clear();
      try {
        t=logReader.readUpdate(data);
      }
 catch (      EOFException e) {
        break;
      }
      if (t > timeStop) {
        break;
      }
      for (      PlotProcessor processor : processors) {
        processor.process((t + timeOffset) * 1e-6,data);
      }
    }
    for (int i=0; i < activeProcessors.size(); i++) {
      PlotProcessor processor=processors[i];
      String processorTitle=activeProcessors.get(i).getTitle();
      Map<String,Integer> processorSeriesIndex=new HashMap<String,Integer>();
      seriesIndex.add(processorSeriesIndex);
      for (      Series series : processor.getSeriesList()) {
        processorSeriesIndex.put(series.getTitle(),dataset.getSeriesCount());
        XYSeries jseries=new XYSeries(series.getFullTitle(processorTitle),false);
        for (        XYPoint point : series) {
          jseries.add(point.x * timeScale,point.y,false);
        }
        dataset.addSeries(jseries);
      }
    }
    setChartColors();
    setChartMarkers();
  }
  chartPanel.repaint();
}