Program: 23522
Project: 23522
Buggy source:
private final void handleReceiver(ReceiverData data){
  unscheduleGcIdler();
  String component=data.intent.getComponent().getClassName();
  PackageInfo packageInfo=getPackageInfoNoCheck(data.info.applicationInfo);
  IActivityManager mgr=ActivityManagerNative.getDefault();
  BroadcastReceiver receiver=null;
  try {
    java.lang.ClassLoader cl=packageInfo.getClassLoader();
    data.intent.setExtrasClassLoader(cl);
    if (data.resultExtras != null) {
      data.resultExtras.setClassLoader(cl);
    }
    receiver=(BroadcastReceiver)cl.loadClass(component).newInstance();
  }
 catch (  Exception e) {
    try {
      mgr.finishReceiver(mAppThread.asBinder(),data.resultCode,data.resultData,data.resultExtras,data.resultAbort);
    }
 catch (    RemoteException ex) {
    }
    throw new RuntimeException("String_Node_Str" + component + "String_Node_Str"+ e.toString(),e);
  }
  try {
    Application app=packageInfo.makeApplication(false);
    if (localLOGV)     Log.v(TAG,"String_Node_Str" + data.intent + "String_Node_Str"+ app+ "String_Node_Str"+ app.getPackageName()+ "String_Node_Str"+ packageInfo.getPackageName()+ "String_Node_Str"+ data.intent.getComponent().toShortString()+ "String_Node_Str"+ packageInfo.getAppDir());
    ApplicationContext context=(ApplicationContext)app.getBaseContext();
    receiver.setOrderedHint(true);
    receiver.setResult(data.resultCode,data.resultData,data.resultExtras);
    receiver.setOrderedHint(data.sync);
    receiver.onReceive(context.getReceiverRestrictedContext(),data.intent);
  }
 catch (  Exception e) {
    try {
      mgr.finishReceiver(mAppThread.asBinder(),data.resultCode,data.resultData,data.resultExtras,data.resultAbort);
    }
 catch (    RemoteException ex) {
    }
    if (!mInstrumentation.onException(receiver,e)) {
      throw new RuntimeException("String_Node_Str" + component + "String_Node_Str"+ e.toString(),e);
    }
  }
  try {
    if (data.sync) {
      mgr.finishReceiver(mAppThread.asBinder(),receiver.getResultCode(),receiver.getResultData(),receiver.getResultExtras(false),receiver.getAbortBroadcast());
    }
 else {
      mgr.finishReceiver(mAppThread.asBinder(),0,null,null,false);
    }
  }
 catch (  RemoteException ex) {
  }
}

Fixed version (ground truth):
private final void handleReceiver(ReceiverData data){
  unscheduleGcIdler();
  String component=data.intent.getComponent().getClassName();
  PackageInfo packageInfo=getPackageInfoNoCheck(data.info.applicationInfo);
  IActivityManager mgr=ActivityManagerNative.getDefault();
  BroadcastReceiver receiver=null;
  try {
    java.lang.ClassLoader cl=packageInfo.getClassLoader();
    data.intent.setExtrasClassLoader(cl);
    if (data.resultExtras != null) {
      data.resultExtras.setClassLoader(cl);
    }
    receiver=(BroadcastReceiver)cl.loadClass(component).newInstance();
  }
 catch (  Exception e) {
    try {
      mgr.finishReceiver(mAppThread.asBinder(),data.resultCode,data.resultData,data.resultExtras,data.resultAbort);
    }
 catch (    RemoteException ex) {
    }
    throw new RuntimeException("String_Node_Str" + component + "String_Node_Str"+ e.toString(),e);
  }
  try {
    Application app=packageInfo.makeApplication(false,mInstrumentation);
    if (localLOGV)     Log.v(TAG,"String_Node_Str" + data.intent + "String_Node_Str"+ app+ "String_Node_Str"+ app.getPackageName()+ "String_Node_Str"+ packageInfo.getPackageName()+ "String_Node_Str"+ data.intent.getComponent().toShortString()+ "String_Node_Str"+ packageInfo.getAppDir());
    ApplicationContext context=(ApplicationContext)app.getBaseContext();
    receiver.setOrderedHint(true);
    receiver.setResult(data.resultCode,data.resultData,data.resultExtras);
    receiver.setOrderedHint(data.sync);
    receiver.onReceive(context.getReceiverRestrictedContext(),data.intent);
  }
 catch (  Exception e) {
    try {
      mgr.finishReceiver(mAppThread.asBinder(),data.resultCode,data.resultData,data.resultExtras,data.resultAbort);
    }
 catch (    RemoteException ex) {
    }
    if (!mInstrumentation.onException(receiver,e)) {
      throw new RuntimeException("String_Node_Str" + component + "String_Node_Str"+ e.toString(),e);
    }
  }
  try {
    if (data.sync) {
      mgr.finishReceiver(mAppThread.asBinder(),receiver.getResultCode(),receiver.getResultData(),receiver.getResultExtras(false),receiver.getAbortBroadcast());
    }
 else {
      mgr.finishReceiver(mAppThread.asBinder(),0,null,null,false);
    }
  }
 catch (  RemoteException ex) {
  }
}