Program: 191105
Project: 191105
Buggy source:
@Override public void onSomePackagesChanged(){
  int userHandle=getChangingUserId();
  if (DEBUG)   Slog.d(TAG,"String_Node_Str" + userHandle);
synchronized (VoiceInteractionManagerServiceStub.this) {
    ComponentName curInteractor=getCurInteractor(userHandle);
    ComponentName curRecognizer=getCurRecognizer(userHandle);
    if (curRecognizer == null) {
      if (anyPackagesAppearing()) {
        curRecognizer=findAvailRecognizer(null,userHandle);
        if (curRecognizer != null) {
          setCurRecognizer(curRecognizer,userHandle);
        }
      }
      return;
    }
    if (curInteractor != null) {
      int change=isPackageDisappearing(curInteractor.getPackageName());
      if (change == PACKAGE_PERMANENT_CHANGE) {
        setCurInteractor(null,userHandle);
        setCurRecognizer(null,userHandle);
        initForUser(userHandle);
        return;
      }
      change=isPackageAppearing(curInteractor.getPackageName());
      if (change != PACKAGE_UNCHANGED) {
        if (mImpl != null && curInteractor.getPackageName().equals(mImpl.mComponent.getPackageName())) {
          switchImplementationIfNeededLocked(true);
        }
      }
      return;
    }
    int change=isPackageDisappearing(curRecognizer.getPackageName());
    if (change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE) {
      setCurRecognizer(findAvailRecognizer(null,userHandle),userHandle);
    }
 else     if (isPackageModified(curRecognizer.getPackageName())) {
      setCurRecognizer(findAvailRecognizer(curRecognizer.getPackageName(),userHandle),userHandle);
    }
  }
}

Fixed version (ground truth):
@Override public void onSomePackagesChanged(){
  int userHandle=getChangingUserId();
  if (DEBUG)   Slog.d(TAG,"String_Node_Str" + userHandle);
synchronized (VoiceInteractionManagerServiceStub.this) {
    ComponentName curInteractor=getCurInteractor(userHandle);
    ComponentName curRecognizer=getCurRecognizer(userHandle);
    ComponentName curAssistant=getCurAssistant(userHandle);
    if (curRecognizer == null) {
      if (anyPackagesAppearing()) {
        curRecognizer=findAvailRecognizer(null,userHandle);
        if (curRecognizer != null) {
          setCurRecognizer(curRecognizer,userHandle);
        }
      }
      return;
    }
    if (curInteractor != null) {
      int change=isPackageDisappearing(curInteractor.getPackageName());
      if (change == PACKAGE_PERMANENT_CHANGE) {
        setCurInteractor(null,userHandle);
        setCurRecognizer(null,userHandle);
        resetCurAssistant(userHandle);
        initForUser(userHandle);
        return;
      }
      change=isPackageAppearing(curInteractor.getPackageName());
      if (change != PACKAGE_UNCHANGED) {
        if (mImpl != null && curInteractor.getPackageName().equals(mImpl.mComponent.getPackageName())) {
          switchImplementationIfNeededLocked(true);
        }
      }
      return;
    }
    if (curAssistant != null) {
      int change=isPackageDisappearing(curAssistant.getPackageName());
      if (change == PACKAGE_PERMANENT_CHANGE) {
        setCurInteractor(null,userHandle);
        setCurRecognizer(null,userHandle);
        resetCurAssistant(userHandle);
        initForUser(userHandle);
        return;
      }
    }
    int change=isPackageDisappearing(curRecognizer.getPackageName());
    if (change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE) {
      setCurRecognizer(findAvailRecognizer(null,userHandle),userHandle);
    }
 else     if (isPackageModified(curRecognizer.getPackageName())) {
      setCurRecognizer(findAvailRecognizer(curRecognizer.getPackageName(),userHandle),userHandle);
    }
  }
}