Program: 193867
Project: 193867
Buggy source:
void readState(){
synchronized (mFile) {
synchronized (this) {
      FileInputStream stream;
      try {
        stream=mFile.openRead();
      }
 catch (      FileNotFoundException e) {
        Slog.i(TAG,"String_Node_Str" + mFile.getBaseFile() + "String_Node_Str");
        return;
      }
      boolean success=false;
      try {
        XmlPullParser parser=Xml.newPullParser();
        parser.setInput(stream,StandardCharsets.UTF_8.name());
        int type;
        while ((type=parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) {
          ;
        }
        if (type != XmlPullParser.START_TAG) {
          throw new IllegalStateException("String_Node_Str");
        }
        int outerDepth=parser.getDepth();
        while ((type=parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
          if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
            continue;
          }
          String tagName=parser.getName();
          if (tagName.equals("String_Node_Str")) {
            readPackage(parser);
          }
 else           if (tagName.equals("String_Node_Str")) {
            readUidOps(parser);
          }
 else {
            Slog.w(TAG,"String_Node_Str" + parser.getName());
            XmlUtils.skipCurrentTag(parser);
          }
        }
        success=true;
      }
 catch (      IllegalStateException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      NullPointerException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      NumberFormatException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      XmlPullParserException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      IOException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      IndexOutOfBoundsException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
 finally {
        if (!success) {
          mUidStates.clear();
        }
        try {
          stream.close();
        }
 catch (        IOException e) {
        }
      }
    }
  }
}

Fixed version (ground truth):
void readState(){
synchronized (mFile) {
synchronized (this) {
      FileInputStream stream;
      try {
        stream=mFile.openRead();
      }
 catch (      FileNotFoundException e) {
        Slog.i(TAG,"String_Node_Str" + mFile.getBaseFile() + "String_Node_Str");
        return;
      }
      boolean success=false;
      mUidStates.clear();
      try {
        XmlPullParser parser=Xml.newPullParser();
        parser.setInput(stream,StandardCharsets.UTF_8.name());
        int type;
        while ((type=parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) {
          ;
        }
        if (type != XmlPullParser.START_TAG) {
          throw new IllegalStateException("String_Node_Str");
        }
        int outerDepth=parser.getDepth();
        while ((type=parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
          if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
            continue;
          }
          String tagName=parser.getName();
          if (tagName.equals("String_Node_Str")) {
            readPackage(parser);
          }
 else           if (tagName.equals("String_Node_Str")) {
            readUidOps(parser);
          }
 else {
            Slog.w(TAG,"String_Node_Str" + parser.getName());
            XmlUtils.skipCurrentTag(parser);
          }
        }
        success=true;
      }
 catch (      IllegalStateException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      NullPointerException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      NumberFormatException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      XmlPullParserException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      IOException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
catch (      IndexOutOfBoundsException e) {
        Slog.w(TAG,"String_Node_Str" + e);
      }
 finally {
        if (!success) {
          mUidStates.clear();
        }
        try {
          stream.close();
        }
 catch (        IOException e) {
        }
      }
    }
  }
}