Program: 183447
Project: 183447
Buggy source:
public void handleMessage(Message msg){
  AsyncResult ar;
switch (msg.what) {
case EVENT_POLL_CALLS_RESULT:
{
      Log.d(LOG_TAG,"String_Node_Str");
      ar=(AsyncResult)msg.obj;
      if (msg == lastRelevantPoll) {
        if (DBG_POLL)         log("String_Node_Str");
        needsPoll=false;
        lastRelevantPoll=null;
        handlePollCalls((AsyncResult)msg.obj);
      }
    }
  break;
case EVENT_OPERATION_COMPLETE:
operationComplete();
break;
case EVENT_SWITCH_RESULT:
break;
case EVENT_GET_LAST_CALL_FAIL_CAUSE:
int causeCode;
ar=(AsyncResult)msg.obj;
operationComplete();
if (ar.exception != null) {
causeCode=CallFailCause.NORMAL_CLEARING;
Log.i(LOG_TAG,"String_Node_Str");
}
 else {
causeCode=((int[])ar.result)[0];
}
for (int i=0, s=droppedDuringPoll.size(); i < s; i++) {
CdmaConnection conn=droppedDuringPoll.get(i);
conn.onRemoteDisconnect(causeCode);
}
updatePhoneState();
phone.notifyPreciseCallStateChanged();
droppedDuringPoll.clear();
break;
case EVENT_REPOLL_AFTER_DELAY:
case EVENT_CALL_STATE_CHANGE:
pollCallsWhenSafe();
break;
case EVENT_RADIO_AVAILABLE:
handleRadioAvailable();
break;
case EVENT_RADIO_NOT_AVAILABLE:
handleRadioNotAvailable();
break;
case EVENT_EXIT_ECM_RESPONSE_CDMA:
if (pendingCallInECM) {
cm.dial(pendingMO.address,pendingCallClirMode,obtainCompleteMessage());
pendingCallInECM=false;
}
phone.unsetOnEcbModeExitResponse(this);
break;
case EVENT_CALL_WAITING_INFO_CDMA:
ar=(AsyncResult)msg.obj;
if (ar.exception == null) {
handleCallWaitingInfo((CdmaCallWaitingNotification)ar.result);
Log.d(LOG_TAG,"String_Node_Str");
}
break;
case EVENT_THREE_WAY_DIAL_L2_RESULT_CDMA:
ar=(AsyncResult)msg.obj;
if (ar.exception == null) {
pendingMO.onConnectedInOrOut();
}
break;
default :
{
throw new RuntimeException("String_Node_Str");
}
}
}

Fixed version (ground truth):
public void handleMessage(Message msg){
  AsyncResult ar;
switch (msg.what) {
case EVENT_POLL_CALLS_RESULT:
{
      Log.d(LOG_TAG,"String_Node_Str");
      ar=(AsyncResult)msg.obj;
      if (msg == lastRelevantPoll) {
        if (DBG_POLL)         log("String_Node_Str");
        needsPoll=false;
        lastRelevantPoll=null;
        handlePollCalls((AsyncResult)msg.obj);
      }
    }
  break;
case EVENT_OPERATION_COMPLETE:
operationComplete();
break;
case EVENT_SWITCH_RESULT:
break;
case EVENT_GET_LAST_CALL_FAIL_CAUSE:
int causeCode;
ar=(AsyncResult)msg.obj;
operationComplete();
if (ar.exception != null) {
causeCode=CallFailCause.NORMAL_CLEARING;
Log.i(LOG_TAG,"String_Node_Str");
}
 else {
causeCode=((int[])ar.result)[0];
}
for (int i=0, s=droppedDuringPoll.size(); i < s; i++) {
CdmaConnection conn=droppedDuringPoll.get(i);
conn.onRemoteDisconnect(causeCode);
}
updatePhoneState();
phone.notifyPreciseCallStateChanged();
droppedDuringPoll.clear();
break;
case EVENT_REPOLL_AFTER_DELAY:
case EVENT_CALL_STATE_CHANGE:
pollCallsWhenSafe();
break;
case EVENT_RADIO_AVAILABLE:
handleRadioAvailable();
break;
case EVENT_RADIO_NOT_AVAILABLE:
handleRadioNotAvailable();
break;
case EVENT_EXIT_ECM_RESPONSE_CDMA:
if (pendingCallInECM) {
cm.dial(pendingMO.address,pendingCallClirMode,obtainCompleteMessage());
pendingCallInECM=false;
}
phone.unsetOnEcbModeExitResponse(this);
break;
case EVENT_CALL_WAITING_INFO_CDMA:
ar=(AsyncResult)msg.obj;
if (ar.exception == null) {
handleCallWaitingInfo((CdmaCallWaitingNotification)ar.result);
Log.d(LOG_TAG,"String_Node_Str");
}
break;
case EVENT_THREE_WAY_DIAL_L2_RESULT_CDMA:
ar=(AsyncResult)msg.obj;
if (ar.exception == null) {
pendingMO.onConnectedInOrOut();
pendingMO=null;
}
break;
default :
{
throw new RuntimeException("String_Node_Str");
}
}
}