Hi,
As far as I know, this issue has more to do with MPI than with DTM. The reason it does not occur when calling main() directly is just that dtm.start is responsible for the MPI init (so if you do not call it, MPI will not be used at all).
Now, the MPI implementation you use may be different, but generally this is related to the MPI initialization on all nodes. By default, most MPI flavors try to use the current working directory (the one from which you execute the mpirun/mpiexec). If this directory is not available on all nodes, it tries to use $HOME. If this directory is not available too (or if the $HOME env. variable is not defined), and if you did not provide it an explicit working directory, then it will crash in the same way you see.
With OpenMPI, the working directory may be set by using the -wdir option (see
http://www.open-mpi.org/doc/v1.4/man1/mpiexec.1.php and
http://www.open-mpi.org/faq/?category=running), with the other implementations like MPICH, it should be almost the same, but you will have to find the exact option name.
If you have more issues with that, I suggest you to post on the mpi4py mailing list (
https://groups.google.com/forum/?fromgroups=#!forum/mpi4py). DTM is built on it, and you may have better support there for pure MPI problems.
I hope this could help; do not hesitate to ask if you have any other questions,
Marc-André Gardner