ok - I mixed up DMPlexReferenceTreeRestoreChildrenMatrices_Injection and 
DMPlexReferenceTreeGetChildrenMatrices_Injection

Satish

On Tue, 12 Apr 2016, Tobin Isaac wrote:

> On Tue, Apr 12, 2016 at 10:42:26PM -0500, Satish Balay wrote:
> > Ok - I see the bug in this code.
> > 
> > static PetscErrorCode 
> > DMPlexReferenceTreeRestoreChildrenMatrices_Injection(DM refTree, Mat inj, 
> > PetscScalar ****childrenMats)
> > 
> > Since this funciton is defined as 'static' the compiler is doing
> > 'inter procedure analysis' across the calling function with -O [this
> > warning comes up only with -O build]
> > 
> > 1. plextree.c:3506 has the following variable declared [uninitialized]
> >   PetscScalar    ***childrenMats;
> > 
> > 2. the next usage of this variable is: plextree.c:3846
> >   ierr = 
> > DMPlexReferenceTreeGetChildrenMatrices_Injection(refTree,injRef,&childrenMats);CHKERRQ(ierr);
> > 
> > 3. Within this function - the first usage of this variable is 
> > plextree.c:L3453
> >   refPointFieldMats = *childrenMats;
> > 
> > i.e access/use of uninitialized variable.
> > 
> > The following supresses the warning - but there is clearly some lurking 
> > bug..
> 
> A bug in the code, or the analyzer?  Like I said, there is a
> conditional-free path that leads to plextree.c:L3436 (was 3437)---
> 
>   *childrenMats = refPointFieldMats;
> 
> ---in the Get function before the line in the Restore function that's
> triggering the warning.  Maybe the (shorter) Restore function is being
> inlined while the Get function isn't, I don't know, but I'm fairly
> confident this is a false positive. 
> 
> Furthermore, this code is covered by tests in next, but looking at the
> dashboard I don't see any warnings from the valgrind build.
> 
> 
> > 
> > diff --git a/src/dm/impls/plex/plextree.c b/src/dm/impls/plex/plextree.c
> > index 2ee02d0..e51f704 100644
> > --- a/src/dm/impls/plex/plextree.c
> > +++ b/src/dm/impls/plex/plextree.c
> > @@ -3503,7 +3503,7 @@ PetscErrorCode DMPlexComputeInjectorTree(DM coarse, 
> > DM fine, PetscSF coarseToFin
> >    PetscLayout    rowMap, colMap;
> >    PetscInt       rowStart, rowEnd, colStart, colEnd, *nnzD, *nnzO;
> >    PetscObject    injRefObj;
> > -  PetscScalar    ***childrenMats;
> > +  PetscScalar    ***childrenMats=0;
> >    PetscErrorCode ierr;
> >  
> >    PetscFunctionBegin;
> > 
> > And this was introduced by http://bitbucket.org/petsc/petsc/commits/f30e825d
> > 
> > Satish
> > 
> > On Fri, 8 Apr 2016, Barry Smith wrote:
> > 
> > > 
> > >   Toby,
> > > 
> > >    We'll be filtering out these false positives. It is just taking us a 
> > > couple of days to determine that needs to be filtered.
> > > 
> > >   Barry
> > > 
> > > > On Apr 8, 2016, at 2:36 PM, Tobin Isaac <[email protected]> wrote:
> > > > 
> > > > 
> > > > I spent a couple minutes verifying that there is no code path where
> > > > that variable is not initialized on line 3437.
> > > > 
> > > > -Wmaybe-uninitialized seems to generate a lot of false positives.
> > > > Coupled with the blame digest's poor ability to assign blame, this
> > > > proactive approach seems to waste more time than a reactive
> > > > SEGV->valgrind->fix approach.
> > > > 
> > > > Cheers,
> > > >  Toby
> > > > 
> > > > On Fri, Apr 08, 2016 at 02:12:22PM -0500, Satish Balay wrote:
> > > >> This should have been sent to Toby.
> > > >> 
> > > >> I don't really understand the issue here. Its triggered by 
> > > >> --with-debugging=0. I'm
> > > >> not sure why these compilers are pointing to petscsys.h. I get 
> > > >> slightly different message
> > > >> on my laptop.
> > > >> 
> > > >> mpicc -c -fPIC  -Wall -Wwrite-strings -Wno-strict-aliasing 
> > > >> -Wno-unknown-pragmas -fvisibility=hidden -g -O   
> > > >> -I/home/balay/petsc/include 
> > > >> -I/home/balay/petsc/arch-linux2-c-opt/include 
> > > >> -I/home/balay/soft/mpich-3.1.4/include    -MMD -MP 
> > > >> /home/balay/petsc/src/dm/impls/plex/plextree.c -o 
> > > >> arch-linux2-c-opt/obj/src/dm/impls/plex/plextree.o
> > > >> /home/balay/petsc/src/dm/impls/plex/plextree.c: In function 
> > > >> ‘DMPlexComputeInjectorTree’:
> > > >> /home/balay/petsc/src/dm/impls/plex/plextree.c:3484:11: warning: 
> > > >> ‘childrenMats’ may be used uninitialized in this function 
> > > >> [-Wmaybe-uninitialized]
> > > >>   ierr = PetscFree(refPointFieldMats);CHKERRQ(ierr);
> > > >>           ^
> > > >> /home/balay/petsc/src/dm/impls/plex/plextree.c:3507:18: note: 
> > > >> ‘childrenMats’ was declared here
> > > >>   PetscScalar    ***childrenMats;
> > > >>                  ^
> > > >> 
> > > >> Satish
> > > >> 
> > > >> On Fri, 8 Apr 2016, PETSc checkBuilds wrote:
> > > >> 
> > > >>> 
> > > >>> 
> > > >>> Dear PETSc developer,
> > > >>> 
> > > >>> This email contains listings of contributions attributed to you by
> > > >>> `git blame` that caused compiler errors or warnings in PETSc automated
> > > >>> testing.  Follow the links to see the full log files. Please attempt 
> > > >>> to fix
> > > >>> the issues promptly or let us know at [email protected] if you 
> > > >>> are unable
> > > >>> to resolve the issues.
> > > >>> 
> > > >>> Thanks,
> > > >>>  The PETSc development team
> > > >>> 
> > > >>> ----
> > > >>> 
> > > >>> warnings attributed to commit 
> > > >>> https://bitbucket.org/petsc/petsc/commits/49d7da5
> > > >>> PetscMalloc: allow ptr=malloc(0) and free(ptr)
> > > >>> 
> > > >>>  include/petscsys.h:1157
> > > >>>    
> > > >>> [http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/archive/2016/04/08/build_next_arch-freebsd-cxx-pkgs-opt_wii.log]
> > > >>>      /usr/home/balay/petsc.clone-2/include/petscsys.h:1157:88: 
> > > >>> warning: 'childrenMats' may be used uninitialized in this function 
> > > >>> [-Wmaybe-uninitialized]
> > > >>>    
> > > >>> [http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/archive/2016/04/08/build_next_arch-linux-opt-cxx-quad_grind.log]
> > > >>>      /sandbox/petsc/petsc.clone-3/include/petscsys.h:1157:88: 
> > > >>> warning: 'childrenMats' may be used uninitialized in this function 
> > > >>> [-Wmaybe-uninitialized]
> > > >>>    
> > > >>> [http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/archive/2016/04/08/build_next_arch-freebsd-pkgs-opt_wii.log]
> > > >>>      /usr/home/balay/petsc.clone/include/petscsys.h:1157:39: warning: 
> > > >>> 'childrenMats' may be used uninitialized in this function 
> > > >>> [-Wmaybe-uninitialized]
> > > >>>    
> > > >>> [http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/archive/2016/04/08/build_next_arch-linux-pkgs-latest_cg.log]
> > > >>>      /sandbox/petsc/petsc.clone-4/include/petscsys.h:1157:25: 
> > > >>> warning: 'childrenMats' may be used uninitialized in this function 
> > > >>> [-Wmaybe-uninitialized]
> > > >>>    
> > > >>> [http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/archive/2016/04/08/build_next_arch-linux-pkgs-opt_crank.log]
> > > >>>      /sandbox/petsc/petsc.clone/include/petscsys.h:1157:25: warning: 
> > > >>> 'childrenMats' may be used uninitialized in this function 
> > > >>> [-Wmaybe-uninitialized]
> > > >>> 
> > > >>> ----
> > > >>> To opt-out from receiving these messages - send a request to 
> > > >>> [email protected].
> > > >>> 
> > > > 
> > > 
> > > 
> 
> 

Reply via email to