[gmx-developers] uninitialized data

David van der Spoel spoel at xray.bmc.uu.se
Wed Apr 22 11:32:13 CEST 2009


Alexander Herz wrote:
> Hm..the first documentation of calloc I found on the net didn't mention
> that it also initializes the data to 0.
> Still it seems a weird thing to do if it provokes false positives in
> valgrind.
> 
Using calloc you mean?

Valgrind did not exist in 1990 when we implemented snew. I won't 
advocate the splendidness of calloc, but it will be a lot of work 
replacing it by proper initializations throughout GROMACS.

Nevertheless valgrind is usually right about not-initialized data, and 
you might be hitting something due to realloc rather than calloc, in 
which case it should be looked into.


> Alex
> 
> David van der Spoel schrieb:
>> Alexander Herz wrote:
>>> of course it must be
>>>
>>>  memset(fr,0,sizeof(t_forcerec));
>>> as fr is a pointer
>> snew does this.
>>
>>> Alex
>>>
>>> Alexander Herz schrieb:
>>>> 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
>>>>
>>>>
>>>> _______________________________________________
>>>> gmx-developers mailing list
>>>> gmx-developers at gromacs.org
>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>> Please don't post (un)subscribe requests to the list. Use the www
>>>> interface or send it to gmx-developers-request at gromacs.org.
>>>>   
>>> _______________________________________________
>>> gmx-developers mailing list
>>> gmx-developers at gromacs.org
>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>> Please don't post (un)subscribe requests to the list. Use the www
>>> interface or send it to gmx-developers-request at gromacs.org.
>>
> 
> _______________________________________________
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://www.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the 
> www interface or send it to gmx-developers-request at gromacs.org.


-- 
David van der Spoel, Ph.D., Professor of Biology
Molec. Biophys. group, Dept. of Cell & Molec. Biol., Uppsala University.
Box 596, 75124 Uppsala, Sweden. Phone:	+46184714205. Fax: +4618511755.
spoel at xray.bmc.uu.se	spoel at gromacs.org   http://folding.bmc.uu.se



More information about the gromacs.org_gmx-developers mailing list