[gmx-developers] uninitialized data

Alexander Herz aherz.kazan at arcor.de
Tue Apr 21 19:40:09 CEST 2009


There appears to be a problem with uninitialized data that might affact
the shifted virial and other things:

in md.c the following code creates the forcerec:

    fr = mk_forcerec();
    init_forcerec(fplog,fr,fcd,inputrec,mtop,cr,box,FALSE,
          opt2fn("-table",nfile,fnm),opt2fn("-tablep",nfile,fnm),
          opt2fn("-tableb",nfile,fnm),FALSE,pforce);
    fr->bSepDVDL = ((Flags & MD_SEPPOT) == MD_SEPPOT);


where mk_forcerec() contains:

t_forcerec *mk_forcerec(void)
{
  t_forcerec *fr;
 
  snew(fr,1);

    //!!!!!!missing :     memset(fr,0,sizeof(fr));
  return fr;
}

and init_forcerec() contains:
...
    if (fr->fshift == NULL)
        snew(fr->fshift,SHIFTS);
   
    if (fr->nbfp == NULL) {
        fr->ntype = mtop->ffparams.atnr;
        fr->bBHAM = (mtop->ffparams.functype[0] == F_BHAM);
        fr->nbfp  = mk_nbfp(&mtop->ffparams,fr->bBHAM);
    }
...

Without the missing memset I added as a comment to mk_forcerec,
fr->fshift may contain anything
and might therefore not be initialized. Valgrind also complains about this.

I have not yet had the time to see if this affects the shifted virial
problems I reported the other day.
I'll look at that tomorrow!

Alex





More information about the gromacs.org_gmx-developers mailing list