Program: 22036
Project: 22036
Buggy source:
private void startCall(SdpSessionDescription peerSd){
  stopCall(DONT_RELEASE_SOCKET);
  mPeerSd=peerSd;
  String peerMediaAddress=peerSd.getPeerMediaAddress(AUDIO);
  int peerMediaPort=peerSd.getPeerMediaPort(AUDIO);
  Log.i(TAG,"String_Node_Str" + peerMediaAddress + "String_Node_Str"+ peerMediaPort);
  int localPort=getLocalMediaPort();
  int sampleRate=8000;
  int frameSize=sampleRate / 50;
  try {
    mCodec=getCodec(peerSd);
    AudioStream audioStream=mRtpSession;
    audioStream.associate(InetAddress.getByName(peerMediaAddress),peerMediaPort);
    audioStream.setCodec(convert(mCodec),mCodec.payloadType);
    audioStream.setDtmfType(DTMF);
    Log.d(TAG,"String_Node_Str" + localPort + "String_Node_Str"+ peerMediaAddress+ "String_Node_Str"+ peerMediaPort);
    audioStream.setMode(RtpStream.MODE_NORMAL);
    if (!mHold) {
      if (!peerSd.isSending(AUDIO)) {
        Log.d(TAG,"String_Node_Str");
        audioStream.setMode(RtpStream.MODE_SEND_ONLY);
      }
      if (!peerSd.isReceiving(AUDIO)) {
        Log.d(TAG,"String_Node_Str");
        audioStream.setMode(RtpStream.MODE_RECEIVE_ONLY);
      }
    }
    setInCallMode();
    AudioGroup audioGroup=new AudioGroup();
    audioStream.join(audioGroup);
    if (mHold) {
      audioGroup.setMode(AudioGroup.MODE_ON_HOLD);
    }
 else     if (mMuted) {
      audioGroup.setMode(AudioGroup.MODE_MUTED);
    }
 else {
      audioGroup.setMode(AudioGroup.MODE_NORMAL);
    }
  }
 catch (  Exception e) {
    Log.e(TAG,"String_Node_Str",e);
  }
}

Fixed version (ground truth):
private void startCall(SdpSessionDescription peerSd){
  stopCall(DONT_RELEASE_SOCKET);
  mPeerSd=peerSd;
  String peerMediaAddress=peerSd.getPeerMediaAddress(AUDIO);
  int peerMediaPort=peerSd.getPeerMediaPort(AUDIO);
  Log.i(TAG,"String_Node_Str" + peerMediaAddress + "String_Node_Str"+ peerMediaPort);
  int localPort=getLocalMediaPort();
  int sampleRate=8000;
  int frameSize=sampleRate / 50;
  try {
    mCodec=getCodec(peerSd);
    AudioStream audioStream=mRtpSession;
    audioStream.associate(InetAddress.getByName(peerMediaAddress),peerMediaPort);
    audioStream.setCodec(convert(mCodec),mCodec.payloadType);
    audioStream.setDtmfType(DTMF);
    Log.d(TAG,"String_Node_Str" + localPort + "String_Node_Str"+ peerMediaAddress+ "String_Node_Str"+ peerMediaPort);
    audioStream.setMode(RtpStream.MODE_NORMAL);
    if (!mHold) {
      if (!peerSd.isSending(AUDIO)) {
        Log.d(TAG,"String_Node_Str");
        audioStream.setMode(RtpStream.MODE_SEND_ONLY);
      }
      if (!peerSd.isReceiving(AUDIO)) {
        Log.d(TAG,"String_Node_Str");
        audioStream.setMode(RtpStream.MODE_RECEIVE_ONLY);
      }
    }
 else {
      ((AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE)).setMode(AudioManager.MODE_NORMAL);
    }
    AudioGroup audioGroup=new AudioGroup();
    audioStream.join(audioGroup);
    if (mHold) {
      audioGroup.setMode(AudioGroup.MODE_ON_HOLD);
    }
 else     if (mMuted) {
      audioGroup.setMode(AudioGroup.MODE_MUTED);
    }
 else {
      audioGroup.setMode(AudioGroup.MODE_NORMAL);
    }
  }
 catch (  Exception e) {
    Log.e(TAG,"String_Node_Str",e);
  }
}