Randy, Thanks, this is now fixed in master, maint, and next and will be fixed in the next patch release.
Barry On Aug 4, 2014, at 5:14 PM, Randall Mackie <[email protected]> wrote: > Barry, > > Yes, that fixes the problem. > > Thanks, Randy > > > On Aug 4, 2014, at 1:49 PM, Barry Smith <[email protected]> wrote: > >> >> Randall, >> >> If you replace the PetscStrncpy(b,a,n+1); with PetscStrncpy(b,a,n); >> >> #define FIXCHAR(a,n,b) \ >> {\ >> if (a == PETSC_NULL_CHARACTER_Fortran) { \ >> b = a = 0; \ >> } else { \ >> while((n > 0) && (a[n-1] == ' ')) n--; \ >> *ierr = PetscMalloc((n+1)*sizeof(char),&b); \ >> if (*ierr) return; \ >> *ierr = PetscStrncpy(b,a,n+1); \ >> if (*ierr) return; \ >> b[n] = 0; \ >> } \ >> } >> >> in include/petsc-private/fortranimpl.h and recompile the PETSc libraries >> does the problem go away? >> >> Let me know and I’ll fix the code. >> >> Thanks >> >> Barry >> >> >> >> On Aug 2, 2014, at 2:20 PM, Randall Mackie <[email protected]> wrote: >> >>> The attached small program, basically a call to PetscPrintf, gives the >>> following valgrind errors: >>> >>> [rmackie ~/tst_petsc_problem] ./cmd_test >>> ==24812== Invalid read of size 1 >>> ==24812== at 0x4C2E500: __GI_strncpy (in >>> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) >>> ==24812== by 0x4EF5B4D: PetscStrncpy (str.c:335) >>> ==24812== by 0x4F334E0: petscprintf_ (zmprintf.c:54) >>> ==24812== by 0x400F28: MAIN__ (test.F90:11) >>> ==24812== by 0x400F9A: main (test.F90:16) >>> ==24812== Address 0x8cef9bb is 0 bytes after a block of size 11 alloc'd >>> ==24812== at 0x4C2AB80: malloc (in >>> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) >>> ==24812== by 0x6828BB4: ??? (in >>> /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0) >>> ==24812== by 0x68FBC97: _gfortran_string_trim (in >>> /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0) >>> ==24812== by 0x400EFD: MAIN__ (test.F90:11) >>> ==24812== by 0x400F9A: main (test.F90:16) >>> ==24812== >>> >>> >>> The program was compiled with PETSc V3.5.1 and --download-mpich. >>> >>> The same program compiled with V3.4.4 and --download-mpich does not give >>> these errors. >>> >>> It seems like an innocuous error, and I can certainly create a suppression >>> file for it, but I thought I'd report it anyway. >>> I get the same error on 2 different systems and I've tried 3 different >>> gfortran versions, all with the same result. >>> >>> Program, configure commands, etc, attached. >>> >>> Randy M. >>> >>> >>> <makefile><test.F90><valgrind_out.txt><cmd_configure><cmd_test> >> >
