The session is to trust the warning, fix the potential bug, and don't blinding initiaizel variables at declaration to hide the warning.
Thanks Satish, beyond the call of duty! Barry > On Apr 12, 2016, at 10:42 PM, Satish Balay <[email protected]> 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.. > > 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]. >>>>> >>> >> >>
