Не вижу смысла вылаживать сюда весь код программы. Очевидно, что баг именно в вызове другой программы, т.к. если этот вызов не делать, то ничего не происходит:
Код:
int start()
{
spawnle(P_NOWAIT, "prog2.exe", NULL);
return 0;
}
Варианты типа одновременного запуска двух программ сюда вобще отношения никакого не имеют.