Hello Lawrence: If I correctly remember your code which created this problem, perhaps you could solve it by using the iostatus parameter:
read(unit,*,iostatus=ierror) some_variable if (ierror.ne.0) then c handle error endif Hope that helps, Douglas. On Mon, Feb 08, 2010 at 01:29:38PM -0600, Laurence Marks wrote: > This was "Re: [OMPI users] Trapping fortran I/O errors leaving zombie > mpi processes", but it is more severe than this. > > Sorry, but it appears that at least with ifort most run-time errors > and signals will leave zombie processes behind with openmpi if they > only occur on some of the processors and not all. You can test this > with the attached using (for instance) > > mpicc -c doraise.c > mpif90 -o crash_test crash_test.F doraise.o -FR -xHost -O3 > > Then, as appropriate mpirun -np 8 crash_test > > The output is self explanatory, and has an option to both try and > simulate common fortran problems as well as to send fortran or C > signals to the process. Please note that the results can be dependent > upon the level of optimization, and with other compilers there could > be problems where the compiler complains about SIGSEV or other errors > since the code deliberately tries to create these. > > -- > Laurence Marks > Department of Materials Science and Engineering > MSE Rm 2036 Cook Hall > 2220 N Campus Drive > Northwestern University > Evanston, IL 60208, USA > Tel: (847) 491-3996 Fax: (847) 491-7820 > email: L-marks at northwestern dot edu > Web: www.numis.northwestern.edu > Chair, Commission on Electron Crystallography of IUCR > www.numis.northwestern.edu/ > Electron crystallography is the branch of science that uses electron > scattering and imaging to study the structure of matter. > #include <signal.h> > #include <stdio.h> > > void doraise(isig) > long isig[1] ; > { > int i, j ; > i = isig[0]; > raise( i ); /* signal i is raised */ > } > > void doraise_(isig) > long isig[1] ; > { > doraise(isig) ; > } > > void whatsig(isig) > long isig[1] ; > { > int i ; > i = isig[0]; > psignal( i , "Testing Signal"); > } > > void whatsig_(isig) > long isig[1] ; > { > whatsig(isig) ; > } > > void showallsignals() > { > int i ; > char buf[15]; > for ( i = 1; i < 32; i++ ) { > sprintf(buf, "Signal code %d ", i); > psignal( i , buf ); > } > } > > void showallsignals_() > { > showallsignals() ; > } > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users