Bad app: ../grid/app-bin/null. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name

com.***.pimobile.automation.driver.appium.ios.IOSAppiumDriver - Error occurred while initializing IOS driver. Error: An unknown server-side error occurred while processing the command. Original error: Bad app: …/grid/app-bin/null. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name. (WARNING: The server did not provide any stacktrace information)
Environment

Appium version (or git revision) that exhibits the issue: 1.6.3
Last Appium version that did not exhibit the issue (if applicable): 1.5.3
Desktop OS/version used to run Appium: MAC EI Capitan
Node.js version (unless using Appium.app|exe): 6.9.5
Mobile platform/version under test: IOS
Real device or emulator/simulator: Simulator
Appium CLI or Appium.app|exe: Appium CLI
Selenium Grid

Details

Tests are failing intermittently with the error mentioned above.
This is happening when we are running tests in parallel using Grid only and not when the tests are run individually. The same tests were running absolutely fine when they were run without using Grid with the new version.
Fyi, our framework is designed so that the simulators are killed after every test is executed. But what is really happening is during one of the test execution, the simulator is not closing and when the next test gets triggered, the old simulator will still be showing up and then the above error is displayed.

We tried to kill the simulator by adding the below code in the tearDown() but this did not work either.
String kill[] = {“killall”,“iOS Simulator”};
Runtime.getRuntime().exec(kill);

We even tried this in the Before hook:
CommandLine command1 = new CommandLine(“killall -9 ‘iOS Simulator’”);
//command1.addArgument(“iOS Simulator”);
DefaultExecuteResultHandler resultHandler1 = new DefaultExecuteResultHandler();
DefaultExecutor executor1 = new DefaultExecutor();
executor1.setExitValue(1);
executor1.execute(command1, resultHandler1);

Appium Logs from all the nodes