As the code is right now, commands that are executed by the tool (e.g., to compile MPI on the host) do not have a timeout. As a result, it may end up hang forever if something is wrong. So all commands that are executed in a sub-process via exec.cmd should have a timeout. Furthermore, the timeout should be configurable since all systems do not have the same level of performance.