Program: 187168
Project: 187168
Buggy source:
private void concatMediaFiles(ArrayList<MediaDesc> listMediaDesc,MediaDesc mdout) throws Exception {
  SoxController sxCon=new SoxController(mContext,sc);
  int exportBitRate=mdout.audioBitrate;
  String exportCodec=mdout.audioCodec;
  FfmpegController ffmpegc=new FfmpegController(mContext,mFileTemp);
  ArrayList<MediaDesc> alAudio=new ArrayList<MediaDesc>();
  Message msg=null;
  int wavIdx=0;
  for (  MediaDesc mediaIn : listMediaDesc) {
    if (new File(mediaIn.path).exists()) {
      msg=mHandler.obtainMessage(0);
      msg.getData().putString("String_Node_Str",String.format("String_Node_Str",(wavIdx + 1),listMediaDesc.size()));
      mHandler.sendMessage(msg);
      MediaDesc audioOut=ffmpegc.convertToWaveAudio(mediaIn,new File(mFileTemp,wavIdx + "String_Node_Str").getCanonicalPath(),mAudioSampleRate,CHANNELS,sc);
      alAudio.add(audioOut);
      double duration=sxCon.getLength(new File(audioOut.path).getCanonicalPath());
      Log.d(AppConstants.TAG,"String_Node_Str" + wavIdx + "String_Node_Str"+ duration);
      if (mediaIn.duration == null) {
        mediaIn.duration=String.format(Locale.US,"String_Node_Str",duration);
      }
 else {
        Log.d(AppConstants.TAG,"String_Node_Str" + wavIdx + "String_Node_Str"+ mediaIn.duration);
      }
      wavIdx++;
    }
 else {
      throw new FileNotFoundException(mediaIn.path);
    }
  }
  String fileOut=alAudio.get(0).path;
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  for (int i=1; i < alAudio.size(); i++) {
    String fileAdd=new File(alAudio.get(i).path).getCanonicalPath();
    CrossfadeCat xCat=new CrossfadeCat(sxCon,fileOut,fileAdd,fadeLen,fileOut);
    xCat.start();
    msg=mHandler.obtainMessage(0);
    msg.getData().putString("String_Node_Str",String.format("String_Node_Str",(i + 1),alAudio.size()));
    mHandler.sendMessage(msg);
  }
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  String fadeFileOut=sxCon.fadeAudio(fileOut,fadeType,fadeLen,0,fadeLen);
  MediaDesc mdFinalIn=new MediaDesc();
  mdFinalIn.path=fadeFileOut;
  mdout.audioBitrate=exportBitRate;
  mdout.audioCodec=exportCodec;
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  MediaDesc exportOut=ffmpegc.convertTo3GPAudio(mdFinalIn,mdout,sc);
}

Fixed version (ground truth):
private void concatMediaFiles(ArrayList<MediaDesc> listMediaDesc,MediaDesc mdout) throws Exception {
  SoxController sxCon=new SoxController(mContext,sc);
  int exportBitRate=mdout.audioBitrate;
  String exportCodec=mdout.audioCodec;
  FfmpegController ffmpegc=new FfmpegController(mContext,mFileTemp);
  ArrayList<MediaDesc> alAudio=new ArrayList<MediaDesc>();
  Message msg=null;
  int wavIdx=0;
  for (  MediaDesc mediaIn : listMediaDesc) {
    if (new File(mediaIn.path).exists()) {
      msg=mHandler.obtainMessage(0);
      msg.getData().putString("String_Node_Str",String.format("String_Node_Str",(wavIdx + 1),listMediaDesc.size()));
      mHandler.sendMessage(msg);
      MediaDesc audioOut=ffmpegc.convertToWaveAudio(mediaIn,new File(mFileTemp,wavIdx + "String_Node_Str").getCanonicalPath(),mAudioSampleRate,CHANNELS,sc);
      alAudio.add(audioOut);
      float duration=(float)sxCon.getLength(new File(audioOut.path).getCanonicalPath());
      Log.d(AppConstants.TAG,"String_Node_Str" + wavIdx + "String_Node_Str"+ duration);
      if (mediaIn.duration == null) {
        mediaIn.duration=String.format(Locale.US,"String_Node_Str",duration);
      }
 else {
        Log.d(AppConstants.TAG,"String_Node_Str" + wavIdx + "String_Node_Str"+ mediaIn.duration);
      }
      wavIdx++;
    }
 else {
      throw new FileNotFoundException(mediaIn.path);
    }
  }
  String fileOut=alAudio.get(0).path;
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  for (int i=1; i < alAudio.size(); i++) {
    String fileAdd=new File(alAudio.get(i).path).getCanonicalPath();
    CrossfadeCat xCat=new CrossfadeCat(sxCon,fileOut,fileAdd,fadeLen,fileOut);
    xCat.start();
    msg=mHandler.obtainMessage(0);
    msg.getData().putString("String_Node_Str",String.format("String_Node_Str",(i + 1),alAudio.size()));
    mHandler.sendMessage(msg);
  }
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  String fadeFileOut=sxCon.fadeAudio(fileOut,fadeType,fadeLen,0,fadeLen);
  MediaDesc mdFinalIn=new MediaDesc();
  mdFinalIn.path=fadeFileOut;
  mdout.audioBitrate=exportBitRate;
  mdout.audioCodec=exportCodec;
  msg=mHandler.obtainMessage(0);
  msg.getData().putString("String_Node_Str","String_Node_Str");
  mHandler.sendMessage(msg);
  MediaDesc exportOut=ffmpegc.convertTo3GPAudio(mdFinalIn,mdout,sc);
}