Hi,
If possible, can you send me off-list the topology (E81A.top) and a
few frames of the trajectory (../input/E81A.nc) so I can try to
reproduce the segfault locally?
One thing you could try is to use the GitHub version of cpptraj in
place of the AmberTools version of cpptraj
(
https://github.com/Amber-MD/cpptraj); it's possible the bug may have
been fixed since the AmberTools release. You would just have to source
cpptraj.sh in CPPTRAJHOME after you source amber.sh in AMBERHOME to
make sure the binary in CPPTRAJHOME gets priority.
Thanks for the report,
-Dan
On Tue, Dec 6, 2022 at 5:35 AM Andrzej Dorobisz via AMBER
<amber.ambermd.org> wrote:
>
> Hello,
> In our HPC centre one of our users encountered SIGSEGV using cpptraj
> program (which was called from MMPBSA.py). We traced it, isolated
> cpptraj call and collected debug information. Could you take a look at
> this - is it a bug in the code or problem with the input data?
>
> *Details*
>
> backtrace:
> > # function args file line
> > -- ----------------------------
> > ------------------------------------------------
> > -------------------------------- ----
> > #0 __memmove_avx_unaligned_erms () /lib64/libc.so.6
> > #1 Frame::SetCoordinates (this=0x2696cb0,frameIn=...,maskIn=...)
> > src/cpptraj/src/Frame.cpp 558
> > #2 Action_Rmsd::DoAction (this=0x2696490,frameNum=221452,frm=...)
> > src/cpptraj/src/Action_Rmsd.cpp 368
> > #3 ActionList::DoActions
> > (this=0x7fff0417cc98,frameNumIn=221452,frm=...)
> > src/cpptraj/src/ActionList.cpp 94
> > #4 CpptrajState::RunNormal (this=0x7fff0417cb60)
> > src/cpptraj/src/CpptrajState.cpp 1354
> > #5 CpptrajState::Run (this=0x7fff0417cb60)
> > src/cpptraj/src/CpptrajState.cpp 500
> > #6 Cpptraj::RunCpptraj
> > (this=0x7fff0417cb60,argc=2,argv=0x7fff0417d048)
> > src/cpptraj/src/Cpptraj.cpp 166
> > #7 CpptrajProgram (argc=2,argv=0x7fff0417d048)
> > src/cpptraj/src/main.cpp 18
> > #8 main (argc=2,argv=0x7fff0417d048) src/cpptraj/src/main.cpp 30
>
> amber version:
> - backtrace collected with Amber 22.1 and AmberTools 22.3 (compiled with
> -DOPTIMIZE=OFF and -O0 -g)
> (we have tested also previous versions of Amber and they all fail on
> user input)
>
> direct command:
> cat input-cpptraj.txt | cpptraj E81A.top
>
> commands in the input-cpptraj.txt:
> > trajin ../input/E81A.nc 1 224999 1
> > noprogress
> > rmsd !(:WAT,Cl*,CIO,Cs+,IB,K*,Li+,MG*,Na+,Rb+,CS,RB,NA,F,CL) mass first
> > outtraj _MMPBSA_complex.pdb onlyframes 1 nobox pdb
> > outtraj _MMPBSA_dummycomplex.inpcrd onlyframes 1 nobox restart
> > outtraj _MMPBSA_complex.mdcrd.0 onlyframes 1-224999 nobox
> > strip :288
> > outtraj _MMPBSA_receptor.pdb onlyframes 1 nobox pdb
> > outtraj _MMPBSA_dummyreceptor.inpcrd onlyframes 1 nobox restart
> > outtraj _MMPBSA_receptor.mdcrd.0 onlyframes 1-224999 nobox
> > unstrip
> > rmsd !(:WAT,Cl*,CIO,Cs+,IB,K*,Li+,MG*,Na+,Rb+,CS,RB,NA,F,CL) mass first
> > strip :1-287,289-576
> > outtraj _MMPBSA_ligand.pdb onlyframes 1 nobox pdb
> > outtraj _MMPBSA_dummyligand.inpcrd onlyframes 1 nobox restart
> > outtraj _MMPBSA_ligand.mdcrd.0 onlyframes 1-224999 nobox
> > unstrip
> > rmsd !(:WAT,Cl*,CIO,Cs+,IB,K*,Li+,MG*,Na+,Rb+,CS,RB,NA,F,CL) mass first
>
> The call that causes SIGSEGV is the memcpy call.
>
> > void Frame::SetCoordinates(Frame const& frameIn, AtomMask const& maskIn) {
> >
> > (...)
> >
> > for (AtomMask::const_iterator atom = maskIn.begin(); atom !=
> > maskIn.end(); ++atom)
> > {
> > memcpy( newXptr, frameIn.X_ + ((*atom) * 3), COORDSIZE_);
> > // <= SIGSEGV here!
> > newXptr += 3;
> > }
> > }
>
> I checked with GDB that the problem is caused by a negative value of the
> source address in the memcpy call (second arg). Such a value is a
> consequence of an invalid index in the "Selected_" vector of the
> "maskIn" (to which the "atom" iterator points).
>
> First values of "maskIn.Selected_":
> {775042866, 3158064, 2, 3, 4, 5, 6, 7, 8, 9, ...}
>
> So the real question is what could have caused to get such a monster
> here....
>
>
> ---
>
> Finally, I would like to point out a minor issue in the MMPBSA.py code.
> When cpptraj fails, then MMPBSA.py also fails, but with the following
> backtrace:
>
> > Loading and checking parameter files for compatibility...
> > cpptraj found! Using
> > /net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/bin/cpptraj
> > sander found! Using
> > /net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/bin/sander
> > Preparing trajectories for simulation...
> > free(): invalid next size (normal)
> > File
> > "/net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/bin/MMPBSA.py.MPI",
> > line 99, in <module>
> > app.file_setup()
> > File
> > "/net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/lib/python3.9/site-packages/MMPBSA_mods/main.py",
> > line 155, in file_setup
> > self.numframes, self.numframes_nmode = make_trajectories(INPUT, FILES,
> > File
> > "/net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/lib/python3.9/site-packages/MMPBSA_mods/make_trajs.py",
> > line 134, in make_trajectories
> > traj.Run(pre + 'normal_traj_cpptraj.out')
> > File
> > "/net/software/testing/software/Amber/22.1-intel-2021b-AmberTools-22.3/lib/python3.9/site-packages/MMPBSA_mods/make_trajs.py",
> > line 687, in Run
> > raise TrajError('Error running %s' % self.program)
> > AttributeError: 'Trajectory' object has no attribute 'program'
> > Error occurred on rank 0.
>
> So actually, there is a bug in make_trajs.py code, because the
> Trajectory object does not have a field named "program".
>
> ---
>
> Looking forward to you help,
>
> Andrzej Dorobisz
>
> HPC Software Department
> ACC Cyfronet AGH, Poland
> _______________________________________________
> AMBER mailing list
> AMBER.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber
_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber
Received on Tue Dec 06 2022 - 06:00:03 PST