Hi Thanks for the help. This was quite confusing, and there is quite an exciting matrix of test results, but I think this is resolved.
Basically, I was playing fast and loose with using a local section to get offsets for a global vector. When I instead used a global section and subtracted the ownership range from the offset, everything seemed to be working okay. What remains a mystery is why was the stack trace pointing to the GlobalVectorCreate instead of the assignment statement to the Scalar array grabbed using VecGetArray? Thanks Nicholas On Wed, Dec 28, 2022 at 3:51 PM Barry Smith <[email protected]> wrote: > > This is a mysterious stack. It is inside memalign() that Valgrind has > found the code is accessing memory outside of the block size allocated, but > memalign() is presumably the routine that is in the middle of the process > of doing the allocation! This could indicate some (undetected) memory > corruption has occurred earlier in the run thus memalign() has corrupted > data structures. I presume this is the first warning message? > > You can try running without Valgrind but with the PETSc option > -malloc_debug and see if that detects corruption more clearly. > > Barry > > > On Dec 28, 2022, at 2:10 PM, Nicholas Arnold-Medabalimi < > [email protected]> wrote: > > Hi Petsc Users > > I've been working with vectors generated from a DM and getting some odd > memory errors. Using Valgrind, I have been able to trace the issue to > DMCreateGlobalVector. I've reduced the code to a relatively simple routine > (very similar to example 7) and attached it. I suspect the issue comes down > to something improperly set in the section. The code, when integrated, will > run correctly 10-30% of the time and otherwise give a memory corruption > error. > > Any insight on the issue or possible error on my part would be > appreciated. > > > Using Valgrind, I get the following error. > > ==27064== Invalid write of size 8 > ==27064== at 0x10C91E: main (section_vector_build.cpp:184) > ==27064== Address 0xc4aa248 is 4 bytes after a block of size 3,204 alloc'd > ==27064== at 0x483E0F0: memalign (in > /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) > ==27064== by 0x483E212: posix_memalign (in > /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) > ==27064== by 0x4C4DAB0: PetscMallocAlign (mal.c:54) > ==27064== by 0x4C5262F: PetscTrMallocDefault (mtr.c:186) > ==27064== by 0x4C501F7: PetscMallocA (mal.c:420) > ==27064== by 0x527E8A9: VecCreate_MPI_Private (pbvec.c:485) > ==27064== by 0x527F04F: VecCreate_MPI (pbvec.c:523) > ==27064== by 0x53E7097: VecSetType (vecreg.c:89) > ==27064== by 0x527FBC8: VecCreate_Standard (pbvec.c:547) > ==27064== by 0x53E7097: VecSetType (vecreg.c:89) > ==27064== by 0x6CD77C0: DMCreateGlobalVector_Section_Private (dmi.c:58) > ==27064== by 0x61D52DB: DMCreateGlobalVector_Plex (plexcreate.c:4130) > > > > -- > Nicholas Arnold-Medabalimi > > Ph.D. Candidate > Computational Aeroscience Lab > University of Michigan > <section_vector_build.cpp> > > > -- Nicholas Arnold-Medabalimi Ph.D. Candidate Computational Aeroscience Lab University of Michigan
