[Pvfs2-users] Error with MALLOC_CHECK_ enabled
Phil Carns
carns at mcs.anl.gov
Tue Apr 29 09:55:49 EDT 2008
Hi Wei-keng,
I think this has probably been fixed in 2.7.1 if you are able to try
that. I just tried to reproduce your problem using that version and
everything seemed to be Ok.
-Phil
Wei-keng Liao wrote:
> I am running a simple MPI-IO program (attached) on PVFS 2.7.0.
> When I set the environment variable MALLOC_CHECK_ to 1 or above, I got
> error messages below: (No error if MALLOC_CHECK_ is not set and if file
> name has "ufs:" prefix)
>
> % mpicc -g pvfs2_bug.c -o pvfs2_bug
> % setenv MALLOC_CHECK_ 3
> % mpiexec -gdb -n 4 pvfs2_bug
> malloc: using debugging hooks
> malloc: using debugging hooks
> 1: malloc: using debugging hooks
> 2: malloc: using debugging hooks
> 0: malloc: using debugging hooks
> 3: malloc: using debugging hooks
> 1: malloc: using debugging hooks
> 2: malloc: using debugging hooks
> 0: malloc: using debugging hooks
> 3: malloc: using debugging hooks
> 0-3: (gdb) run /pvfs2/wkliao/testfile.dat
> 0-3: Continuing.
> 1:
> 1: Program received signal SIGSEGV, Segmentation fault.
> 1: 0x00000038a3872190 in _int_free (av=0x38a3b52980, mem=0x79b300)
> 1: at malloc.c:4663
> 1: 4663 unlink(nextchunk, bck, fwd);
> 1: (gdb) 1: (gdb) where
> 1: #0 0x00000038a3872190 in _int_free (av=0x38a3b52980, mem=0x79b300)
> 1: at malloc.c:4663
> 1: #1 0x00000038a3876693 in free_check (mem=0x79b300,
> 1: caller=<value optimized out>) at hooks.c:298
> 1: #2 0x00000038a3875ec7 in __libc_free (mem=0x0) at malloc.c:3590
> 1: #3 0x00000000004ea2cd in PINT_smcb_free ()
> 1: #4 0x0000000000486e84 in PINT_sys_release ()
> 1: #5 0x000000000048f4f1 in PVFS_sys_io ()
> 1: #6 0x0000000000444d54 in ADIOI_PVFS2_ReadContig ()
> 1: #7 0x000000000043cb64 in MPIOI_File_read ()
> 1: #8 0x0000000000408f8f in PMPI_File_read_at ()
> 1: #9 0x0000000000403e5d in main (argc=2, argv=0x7fff8b04d438) at pvfs2_bug.c:29
> 1: (gdb)
>
> ---------------------------------------------------------------------------
> pvfs2_bug.c
> ---------------------------------------------------------------------------
> #include <stdio.h>
> #include <stdlib.h>
> #include <mpi.h>
>
> /*----< main() >------------------------------------------------------------*/
> int main(int argc, char **argv) {
> int i, rank, np;
> char buf[65536];
> MPI_File fh;
> MPI_Status status;
> MPI_Offset offset;
>
> MPI_Init(&argc, &argv);
> MPI_Comm_rank(MPI_COMM_WORLD, &rank);
> MPI_Comm_size(MPI_COMM_WORLD, &np);
> if (argc != 2) {
> if (rank == 0) fprintf(stderr,"Usage: %s filename\n",argv[0]);
> MPI_Finalize(); return 1;
> }
>
> MPI_File_open(MPI_COMM_WORLD, argv[1], MPI_MODE_CREATE | MPI_MODE_RDWR,
> MPI_INFO_NULL, &fh);
>
> offset = rank * 65536;
> for (i=0; i<65536; i++) buf[i] = '0'+rank;
> MPI_File_write_at(fh, offset, buf, 65536, MPI_CHAR, &status);
>
> offset = ((rank+1)%np) * 65536;
> MPI_File_read_at(fh, offset, buf, 65536, MPI_CHAR, &status);
>
> MPI_File_close(&fh);
>
> MPI_Finalize();
> return 0;
> }
>
> _______________________________________________
> Pvfs2-users mailing list
> Pvfs2-users at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
More information about the Pvfs2-users
mailing list