I have a small program in F77 that makes a SEGV crash with a 130MB core file. It is true that the crash is much cleaner in OpenMPI 1.2; nice improvement! The core file is 500 MB with OpenMPI 1.1.
I am running on CentOS 4.4 with the latest patches. mpif77 -g -o bug bug.f mpirun -np 2 ./bug I also have a bug.f90 (which I made first) and it crashes too with the Intel ifort compiler 9.1.039. -- Dr. Erik Deumens Interim Director Quantum Theory Project New Physics Building 2334 deum...@qtp.ufl.edu University of Florida http://www.qtp.ufl.edu/~deumens Gainesville, Florida 32611-8435 (352)392-6980
program mainf c mpif77 -g -o bug bug.f c mpirun -np 2 ./bug implicit none include 'mpif.h' character*80 inpfile integer l integer i integer stat integer cmdbuf(4) integer lcmdbuf integer ierr integer ntasks integer taskid integer bufpos integer cmd integer ldata character*(mpi_max_processor_name) hostnm integer iuinp integer iuout integer lnam real*8 bcaststart iuinp = 5 iuout = 6 lcmdbuf = 16 i = 0 call mpi_init(ierr) call mpi_comm_size (mpi_comm_world, ntasks, ierr) call mpi_comm_rank (mpi_comm_world, taskid, ierr) hostnm = ' ' call mpi_get_processor_name (hostnm, lnam, ierr) write (iuout,*) 'task',taskid,'of',ntasks,'on ',hostnm(1:lnam) if (taskid == 0) then inpfile = ' ' do write (iuout,*) 'Enter .inp filename:' read (iuinp,*) inpfile if (inpfile /= ' ') exit end do l = len_trim(inpfile) write (iuout,*) 'task',taskid,inpfile(1:l) bufpos = 0 cmd = 1099 ldata = 7 write (iuout,*) 'task',taskid,cmdbuf,bufpos write (iuout,*) 'task',taskid,cmd,lcmdbuf call mpi_pack (cmd, 1, MPI_INTEGER, * cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) write (iuout,*) 'task',taskid,cmdbuf,bufpos write (iuout,*) 'task',taskid,ldata,lcmdbuf call mpi_pack (ldata, 1, MPI_INTEGER, * cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) bcaststart = mpi_wtime() write (iuout,*) 'task',taskid,cmdbuf,bufpos write (iuout,*) 'task',taskid,bcaststart,lcmdbuf call mpi_pack (bcaststart, 1, MPI_DOUBLE_PRECISION, * cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) write (iuout,*) 'task',taskid,cmdbuf,bufpos end if call mpi_bcast (cmdbuf, lcmdbuf, MPI_PACKED, * 0, MPI_COMM_WORLD, ierr) call mpi_finalize(ierr) stop end program mainf
program mainf ! ifort -g -I /share/local/lib/ompi/include -o bug bug.f90 ! -L /share/local/lib/ompi/lib -lmpi_f77 -lmpi ! mpirun -np 2 ./bug implicit none include 'mpif.h' character(len=80) :: inpfile character(len=1), dimension(80) :: cinpfile integer :: l integer :: i integer :: stat integer, dimension(4) :: cmdbuf integer :: lcmdbuf integer :: ierr integer :: ntasks integer :: taskid integer :: bufpos integer :: cmd integer :: ldata character(len=mpi_max_processor_name) :: hostnm integer :: iuinp = 5 integer :: iuout = 6 integer :: lnam real(8) :: bcaststart lcmdbuf = 16 i = 0 call mpi_init(ierr) call mpi_comm_size (mpi_comm_world, ntasks, ierr) call mpi_comm_rank (mpi_comm_world, taskid, ierr) hostnm = ' ' call mpi_get_processor_name (hostnm, lnam, ierr) write (iuout,*) 'task',taskid,'of',ntasks,'on ',hostnm(1:lnam) if (taskid == 0) then inpfile = ' ' do write (iuout,*) 'Enter .inp filename:' read (iuinp,*) inpfile if (inpfile /= ' ') exit end do l = len_trim(inpfile) do i=1,l cinpfile(i) = inpfile(i:i) end do cinpfile(l+1) = char(0) write (iuout,*) 'task',taskid,inpfile(1:l) bufpos = 0 cmd = 1099 ldata = 7 write (iuout,*) 'task',taskid,cmdbuf,bufpos ! The next two lines exhibit the bug ! Uncomment the first and the program works ! Uncomment the second and the program dies in mpi_pack ! and produces a 137 MB core file. write (iuout,*) 'task',taskid,cmd,lcmdbuf ! write (iuout,*) 'task',taskid,cmd call mpi_pack (cmd, 1, MPI_INTEGER, & cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) write (iuout,*) 'task',taskid,cmdbuf,bufpos write (iuout,*) 'task',taskid,ldata,lcmdbuf call mpi_pack (ldata, 1, MPI_INTEGER, & cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) bcaststart = mpi_wtime() write (iuout,*) 'task',taskid,cmdbuf,bufpos write (iuout,*) 'task',taskid,bcaststart,lcmdbuf call mpi_pack (bcaststart, 1, MPI_DOUBLE_PRECISION, & cmdbuf, lcmdbuf, bufpos, MPI_COMM_WORLD) write (iuout,*) 'task',taskid,cmdbuf,bufpos end if call mpi_bcast (cmdbuf, lcmdbuf, MPI_PACKED, & 0, MPI_COMM_WORLD, ierr) call mpi_finalize(ierr) stop end program mainf