Program: 55042
Project: 55042
Buggy source:
public void onSocketMessage(byte[] message){
  try {
    Log.i(TAG,"String_Node_Str" + Base64.encodeToString(message,Base64.NO_WRAP));
    List<Value> input=msgpack.read(message,tList(TValue));
    String action=input.get(0).asRawValue().getString();
    Log.i(TAG,String.format("String_Node_Str",action));
    if (action.equals("String_Node_Str") || action.equals("String_Node_Str")) {
      final String script=input.get(1).asRawValue().getString();
      Log.i(TAG,"String_Node_Str" + Integer.toString(script.length()));
      if (activity == null)       return;
      final MainActivity a=activity.get();
      if (a == null)       return;
      if (action.equals("String_Node_Str"))       SaveData(script.getBytes(),"String_Node_Str",false,"String_Node_Str");
      a.runOnUiThread(new Thread(){
        public void run(){
          runScript(script);
        }
      }
);
    }
 else     if (action.equals("String_Node_Str")) {
      final String url=input.get(1).asRawValue().getString();
      if (activity == null)       return;
      final MainActivity a=activity.get();
      if (a == null)       return;
      a.runOnUiThread(new Thread(){
        public void run(){
          runScriptUrl(url);
        }
      }
);
    }
 else     if (action.equals("String_Node_Str")) {
      List<Value> output=new ArrayList<Value>();
      output.add(ValueFactory.createRawValue("String_Node_Str"));
      output.add(ValueFactory.createRawValue(glassID));
synchronized (lock) {
        client.send(msgpack.write(output));
      }
    }
 else     if (action.equals("String_Node_Str")) {
    }
 else     if (action.equals("String_Node_Str")) {
      if (webview != null) {
        String jsCallback=cameraManager.buildCallbackString(1,input.get(3).asRawValue().getByteArray());
        if (jsCallback != null)         webview.loadUrl(jsCallback);
      }
    }
 else     if (action.equals("String_Node_Str")) {
      int versionExpected=0;
      int version=input.get(1).asIntegerValue().getInt();
      if (version != versionExpected) {
        say("String_Node_Str" + version + "String_Node_Str"+ versionExpected+ "String_Node_Str");
      }
    }
 else     if (action.equals("String_Node_Str")) {
      Log.i(TAG,"String_Node_Str");
      shutdown();
    }
 else     if (action.equals("String_Node_Str")) {
    }
    Log.d(TAG,String.format("String_Node_Str",message.length));
  }
 catch (  Exception e) {
    Log.e(TAG,e.toString());
  }
}

Fixed version (ground truth):
public void onSocketMessage(byte[] message){
  try {
    Log.i(TAG,"String_Node_Str" + Base64.encodeToString(message,Base64.NO_WRAP));
    List<Value> input=msgpack.read(message,tList(TValue));
    String action=input.get(0).asRawValue().getString();
    Log.i(TAG,String.format("String_Node_Str",action));
    if (action.equals("String_Node_Str")) {
      final String script=input.get(1).asRawValue().getString();
      Log.i(TAG,"String_Node_Str" + Integer.toString(script.length()));
      if (activity == null)       return;
      final MainActivity a=activity.get();
      if (a == null)       return;
      a.runOnUiThread(new Thread(){
        public void run(){
          runScript(script);
        }
      }
);
    }
 else     if (action.equals("String_Node_Str")) {
      final String script=input.get(1).asRawValue().getString();
      final String name=input.get(2).asRawValue().getString();
      Pattern p=Pattern.compile("String_Node_Str");
      if (name == null || name.isEmpty() || p.matcher(name).find()) {
        Log.w(TAG,"String_Node_Str");
        return;
      }
      SaveData(script.getBytes(),"String_Node_Str",false,"String_Node_Str" + name + "String_Node_Str");
    }
 else     if (action.equals("String_Node_Str")) {
      final String url=input.get(1).asRawValue().getString();
      if (activity == null)       return;
      final MainActivity a=activity.get();
      if (a == null)       return;
      a.runOnUiThread(new Thread(){
        public void run(){
          runScriptUrl(url);
        }
      }
);
    }
 else     if (action.equals("String_Node_Str")) {
      List<Value> output=new ArrayList<Value>();
      output.add(ValueFactory.createRawValue("String_Node_Str"));
      output.add(ValueFactory.createRawValue(glassID));
synchronized (lock) {
        client.send(msgpack.write(output));
      }
    }
 else     if (action.equals("String_Node_Str")) {
    }
 else     if (action.equals("String_Node_Str")) {
      if (webview != null) {
        String jsCallback=cameraManager.buildCallbackString(1,input.get(3).asRawValue().getByteArray());
        if (jsCallback != null)         webview.loadUrl(jsCallback);
      }
    }
 else     if (action.equals("String_Node_Str")) {
      int versionExpected=0;
      int version=input.get(1).asIntegerValue().getInt();
      if (version != versionExpected) {
        say("String_Node_Str" + version + "String_Node_Str"+ versionExpected+ "String_Node_Str");
      }
    }
 else     if (action.equals("String_Node_Str")) {
      Log.i(TAG,"String_Node_Str");
      shutdown();
    }
 else     if (action.equals("String_Node_Str")) {
    }
    Log.d(TAG,String.format("String_Node_Str",message.length));
  }
 catch (  Exception e) {
    Log.e(TAG,e.toString());
  }
}