[gmx-developers] Memory allocation bug in g_traj (cvs + 3.3.1)

hessb at mpip-mainz.mpg.de hessb at mpip-mainz.mpg.de
Wed Jul 11 18:48:46 CEST 2007


>>> Hello All,
>>>
>>> I encountered a little (and easy to fix) bug in gmx_traj.c,
>>> in cvs it is at line 571, in 3.3.1 line 553.
>>> -> isize[i] = atndx[index0[0][i]+1] - atndx[index0[0][i]];
>>> isize[i] can become negative in some cases what results in the attempt
>>> to pass a negative number to sfree() and thus a crash.
>>
>> I guess you mean snew()?
>>
>>> This is easily fixed by just adding behind the above line.
>>> if (isize[i] < 0)
>>>   isize[i] = isize[i] * -1;
>>>
>>> Regards,
>>> Wolfram
>>
>> But isize[i] should never become negative, unless you pass
>> an incorrect molecule number (<1 or >#mols).
>> So we should add a check for that instead of your fix.
>> Or am I wrong?
>>
>> Berk.
>
> Ah, now I looked again I see the code is actually incorrect.
> The atndx should not be used to determine the isize.
> But I think this would only go wrong with a shuffled system.
> Did you use grompp -shuffle?
>
> Berk.

I think I am too tired...
The atndx should be there, so ignore my previous mail.

I have committed a check in g_traj to the CVS head branch.
I would assume your system would now give a fatal_error
instead of producing a negative isize[i].

Berk.





More information about the gromacs.org_gmx-developers mailing list