[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