[petsc-users] Error in VecAssemeblyBegin after VecView

Johannes.Huber at unibas.ch Johannes.Huber at unibas.ch
Thu Jan 5 02:39:13 CST 2012


Hi,
great, it works now.
When I take a look to the valgrind output, I see a few lines about  
unaddressable bytes. Is this a reason to concern?
BTW: I also see memory leaks from getpwuid. Does anybody know about a  
patch for this?
Many thanks,
     Hannes

Quoting Satish Balay <balay at mcs.anl.gov>:

> The fix is here.
>
> http://petsc.cs.iit.edu/petsc/releases/petsc-3.2/rev/cd89aa6b51bc
>
> You can download the 'raw' patch [from the 'raw' link above] - save it
> as 'patchfile' - and apply with:
>
> patch -Np1 < patchfile
>
> Satish
>
> On Wed, 4 Jan 2012, Barry Smith wrote:
>
>>
>>    Hannes,
>>
>>       Thanks for reporting the problem. It is a bug in our handling  
>> of PETSC_VIEWER_ASCII_MATLAB in parallel. I have fixed the  
>> repository copy in both petsc-3.2 and petsc-dev   It will be fixed  
>> in the next patch release of 3.2 or Satish can send you the patch  
>> file; just ask for it at petsc-maint at mcs.anl.gov
>>
>>     Barry
>>
>>
>> > Hannes
>>
>> On Jan 4, 2012, at 11:59 AM, Johannes.Huber at unibas.ch wrote:
>>
>> > Hi all,
>> > thanks a lot for you help.
>> > I tracked the problem down to a minimal program and found, that  
>> it looks like I'm doing something wrong when using the matlab  
>> format. Here is the minimal program:
>> > #include <petscvec.h>
>> > static char help[] = "Matlab output.\n\n";
>> > int main (int argc, char** argv)
>> > {
>> >  PetscInitialize(&argc,&argv,(char*)0,help);
>> >  Vec b;
>> >  PetscInt ierr;
>> >  int r;
>> >  MPI_Comm_rank(PETSC_COMM_WORLD,&r);
>> >  ierr=VecCreate(PETSC_COMM_WORLD,&b); CHKERRQ(ierr);
>> >  ierr=VecSetSizes(b,10,PETSC_DECIDE); CHKERRQ(ierr);
>> >  ierr=VecSetFromOptions(b); CHKERRQ(ierr);
>> >  ierr=VecZeroEntries(b); CHKERRQ(ierr);
>> >  ierr=VecAssemblyBegin(b); CHKERRQ(ierr);
>> >  ierr=VecAssemblyEnd(b); CHKERRQ(ierr);
>> >
>> >  PetscViewer File;
>> >  ierr=PetscViewerASCIIOpen(PETSC_COMM_WORLD,"Test.m",&File);  
>> CHKERRQ(ierr);
>> >  ierr=PetscViewerSetFormat(File,PETSC_VIEWER_ASCII_MATLAB);  
>> CHKERRQ(ierr);  // crash
>> >  //ierr=PetscViewerSetFormat(File,PETSC_VIEWER_ASCII_INDEX);  
>> CHKERRQ(ierr);  //works
>> >  //ierr=PetscViewerSetFormat(File,PETSC_VIEWER_ASCII_DENSE);  
>> CHKERRQ(ierr);  //works
>> >  ierr=VecView(b,File); CHKERRQ(ierr);
>> >  ierr=PetscViewerDestroy(&File); CHKERRQ(ierr);
>> >
>> >  printf("[%d]: %d\n",r,__LINE__);
>> >  VecAssemblyBegin(b);
>> >  printf("[%d]: %d\n",r,__LINE__);
>> >  VecAssemblyEnd(b);
>> >  ierr=VecDestroy(&b); CHKERRQ(ierr);
>> >  MPI_Barrier(PETSC_COMM_WORLD);
>> >  PetscFinalize();
>> >  return 0;
>> > }
>> > Does anybody know, what's wrong with this?
>> >
>> > Thanks a lot,
>> >    Hannes
>> >
>> > Quoting Barry Smith <bsmith at mcs.anl.gov>:
>> >
>> >>
>> >> On Jan 3, 2012, at 6:59 AM, Jed Brown wrote:
>> >>
>> >>> On Tue, Jan 3, 2012 at 06:41, <Johannes.Huber at unibas.ch> wrote:
>> >>> The first assembly works well, and I would agree, if the first  
>> assmebly crashed. However, it's the second assembly call and in  
>> between those two calls, all I'm doing is viewing the vector.
>> >>>
>> >>> Use a debugger to set a breakpoint in VecSetValues(); maybe  
>> starting after your first assemble. Also try Valgrind, it could be  
>> memory corruption.
>> >>
>> >> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
>> >>
>> >>
>> >>>
>> >>> You can also break in the first VecAssemblyBegin and do
>> >>>
>> >>> (gdb) p &vec->stash.insertmode
>> >>> $1 = (InsertMode *) 0xADDRESS
>> >>> (gdb) wat *$1
>> >>> Hardware watchpoint 3: *$1
>> >>> (gdb) c
>> >>> ... breaks when insertmode is modified for any reason.
>> >>
>> >>
>> >
>> >
>> >
>> > ----------------------------------------------------------------
>> > This message was sent using IMP, the Internet Messaging Program.
>> >
>> >
>>
>>
>
>



----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




More information about the petsc-users mailing list