Program: 41870
Project: 41870
Buggy source:
private void drawBoard(Canvas canvas,int bgColor_UNUSED,int lineColor_UNUSED){
  final int boardW=getMeasuredWidth();
  final int boardH=getMeasuredHeight();
  Log.d(TAG,"String_Node_Str" + boardW + "String_Node_Str"+ boardH+ "String_Node_Str"+ isBlackOnTop_);
  for (int i=0; i < 10; i++) {
    canvas.drawLine(offset_,offset_ + i * cellSize_,offset_ + 8 * cellSize_,offset_ + i * cellSize_,linePaint_);
  }
  for (int i=0; i < 9; i++) {
    if (i == 0 || i == 8) {
      canvas.drawLine(offset_ + i * cellSize_,offset_,offset_ + i * cellSize_,offset_ + cellSize_ * 9,linePaint_);
    }
 else {
      canvas.drawLine(offset_ + i * cellSize_,offset_,offset_ + i * cellSize_,offset_ + cellSize_ * 4,linePaint_);
      canvas.drawLine(offset_ + i * cellSize_,offset_ + 5 * cellSize_,offset_ + i * cellSize_,offset_ + 5 * cellSize_ + cellSize_ * 4,linePaint_);
    }
  }
  canvas.drawLine(offset_ + 3 * cellSize_,offset_,offset_ + 3 * cellSize_ + 2 * cellSize_,offset_ + 2 * cellSize_,linePaint_);
  canvas.drawLine(offset_ + 5 * cellSize_,offset_,offset_ + 5 * cellSize_ - 2 * cellSize_,offset_ + cellSize_ * 2,linePaint_);
  canvas.drawLine(offset_ + 3 * cellSize_,offset_ + 7 * cellSize_,offset_ + 3 * cellSize_ + 2 * cellSize_,offset_ + 7 * cellSize_ + 2 * cellSize_,linePaint_);
  canvas.drawLine(offset_ + 5 * cellSize_,offset_ + 7 * cellSize_,offset_ + 5 * cellSize_ - 2 * cellSize_,offset_ + 7 * cellSize_ + 2 * cellSize_,linePaint_);
  final boolean bDescending=(!isBlackOnTop_);
  final int imageRadius=(int)(pieceSize_ / 2);
  drawHeaderRow(canvas,offset_ - imageRadius - 10,offset_,true);
  drawHeaderRow(canvas,offset_ + cellSize_ * 8 + imageRadius,offset_,true);
  drawHeaderColumn(canvas,offset_,offset_,bDescending);
  drawHeaderColumn(canvas,offset_,offset_ + 10 * cellSize_ + 20,bDescending);
  final int nSize=cellSize_ / 7;
  final int nSpace=3;
  int[][] mirrors=new int[][]{{1,2},{7,2},{2,3},{4,3},{6,3},{8,3},{2,6},{4,6},{6,6},{8,6},{1,7},{7,7}};
  for (  int[] m : mirrors) {
    int[] point=new int[]{offset_ + m[0] * cellSize_,offset_ + m[1] * cellSize_};
    canvas.drawLine(point[0] - nSpace,point[1] - nSpace,point[0] - nSpace - nSize,point[1] - nSpace,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] - nSpace,point[0] - nSpace,point[1] - nSpace - nSize,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] + nSpace,point[0] - nSpace - nSize,point[1] + nSpace,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] + nSpace,point[0] - nSpace,point[1] + nSpace + nSize,linePaint_);
  }
  mirrors=new int[][]{{1,2},{7,2},{0,3},{2,3},{4,3},{6,3},{0,6},{2,6},{4,6},{6,6},{1,7},{7,7}};
  for (  int[] m : mirrors) {
    int[] point={offset_ + m[0] * cellSize_,offset_ + m[1] * cellSize_};
    canvas.drawLine(point[0] + nSpace,point[1] - nSpace,point[0] + nSpace + nSize,point[1] - nSpace,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] - nSpace,point[0] + nSpace,point[1] - nSpace - nSize,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] + nSpace,point[0] + nSpace + nSize,point[1] + nSpace,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] + nSpace,point[0] + nSpace,point[1] + nSpace + nSize,linePaint_);
  }
}

Fixed version (ground truth):
private void drawBoard(Canvas canvas,int bgColor_UNUSED,int lineColor_UNUSED){
  final int boardW=getMeasuredWidth();
  final int boardH=getMeasuredHeight();
  Log.v(TAG,"String_Node_Str" + boardW + "String_Node_Str"+ boardH+ "String_Node_Str"+ isBlackOnTop_);
  for (int i=0; i < 10; i++) {
    canvas.drawLine(offset_,offset_ + i * cellSize_,offset_ + 8 * cellSize_,offset_ + i * cellSize_,linePaint_);
  }
  for (int i=0; i < 9; i++) {
    if (i == 0 || i == 8) {
      canvas.drawLine(offset_ + i * cellSize_,offset_,offset_ + i * cellSize_,offset_ + cellSize_ * 9,linePaint_);
    }
 else {
      canvas.drawLine(offset_ + i * cellSize_,offset_,offset_ + i * cellSize_,offset_ + cellSize_ * 4,linePaint_);
      canvas.drawLine(offset_ + i * cellSize_,offset_ + 5 * cellSize_,offset_ + i * cellSize_,offset_ + 5 * cellSize_ + cellSize_ * 4,linePaint_);
    }
  }
  canvas.drawLine(offset_ + 3 * cellSize_,offset_,offset_ + 3 * cellSize_ + 2 * cellSize_,offset_ + 2 * cellSize_,linePaint_);
  canvas.drawLine(offset_ + 5 * cellSize_,offset_,offset_ + 5 * cellSize_ - 2 * cellSize_,offset_ + cellSize_ * 2,linePaint_);
  canvas.drawLine(offset_ + 3 * cellSize_,offset_ + 7 * cellSize_,offset_ + 3 * cellSize_ + 2 * cellSize_,offset_ + 7 * cellSize_ + 2 * cellSize_,linePaint_);
  canvas.drawLine(offset_ + 5 * cellSize_,offset_ + 7 * cellSize_,offset_ + 5 * cellSize_ - 2 * cellSize_,offset_ + 7 * cellSize_ + 2 * cellSize_,linePaint_);
  final boolean bDescending=(!isBlackOnTop_);
  final int imageRadius=(int)(pieceSize_ / 2);
  drawHeaderRow(canvas,offset_ - imageRadius - 10,offset_,true);
  drawHeaderRow(canvas,offset_ + cellSize_ * 8 + imageRadius,offset_,true);
  drawHeaderColumn(canvas,offset_,offset_,bDescending);
  drawHeaderColumn(canvas,offset_,offset_ + 10 * cellSize_ + 20,bDescending);
  final int nSize=cellSize_ / 7;
  final int nSpace=3;
  int[][] mirrors=new int[][]{{1,2},{7,2},{2,3},{4,3},{6,3},{8,3},{2,6},{4,6},{6,6},{8,6},{1,7},{7,7}};
  for (  int[] m : mirrors) {
    int[] point=new int[]{offset_ + m[0] * cellSize_,offset_ + m[1] * cellSize_};
    canvas.drawLine(point[0] - nSpace,point[1] - nSpace,point[0] - nSpace - nSize,point[1] - nSpace,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] - nSpace,point[0] - nSpace,point[1] - nSpace - nSize,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] + nSpace,point[0] - nSpace - nSize,point[1] + nSpace,linePaint_);
    canvas.drawLine(point[0] - nSpace,point[1] + nSpace,point[0] - nSpace,point[1] + nSpace + nSize,linePaint_);
  }
  mirrors=new int[][]{{1,2},{7,2},{0,3},{2,3},{4,3},{6,3},{0,6},{2,6},{4,6},{6,6},{1,7},{7,7}};
  for (  int[] m : mirrors) {
    int[] point={offset_ + m[0] * cellSize_,offset_ + m[1] * cellSize_};
    canvas.drawLine(point[0] + nSpace,point[1] - nSpace,point[0] + nSpace + nSize,point[1] - nSpace,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] - nSpace,point[0] + nSpace,point[1] - nSpace - nSize,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] + nSpace,point[0] + nSpace + nSize,point[1] + nSpace,linePaint_);
    canvas.drawLine(point[0] + nSpace,point[1] + nSpace,point[0] + nSpace,point[1] + nSpace + nSize,linePaint_);
  }
}