From: John Stone (
Date: Tue Jan 26 2021 - 01:30:38 CST

  I've revised the affected loop to correctly delete atom selections
it creates as they are finished being used. The new code will be included
in the next round of VMD 1.9.4 test builds.

Best regards,
  John Stone

On Thu, Jan 21, 2021 at 01:33:44AM -0500, Peter Freddolino wrote:
> Dear Timothy,
> Thanks for bringing this up. Indeed, there does seem to be a memory leak
> in that part of the code. I would think it would be cleaner just to keep
> the code basically as is, but create, use, and delete the atom selection.
> I'll talk to the vmd core folks about getting this change made.
> For your purposes, I would think the best solution is just to generate a
> patch file and include it as supplementary material for your paper; you
> can tell people that they can reproduce your setup by applying that patch
> to the cgtools.tcl code in vmd 1.9.3, and that way you don't have to
> distribute any of the rest of the code. Not sure if John or other current
> folks on the dev team have other thoughts.
> Thanks,
> Peter
> On Wed, Jan 20, 2021 at 2:09 PM Timothy Leong <[1]> wrote:
> Greetings all,
> I recently had a crash that returned no error message when assigning LJ
> Parameters to a CG system with ~52000 atoms in the all-atom model on a
> Linux OS with 6 GB of RAM (VMD version 1.9.3). After looking into the
> cgtools.tcl package I noticed that lines 834-841 were responsible for
> the memory overflow issue, given that they involve the creation of
> numerous atomselections that accumulate without deletion. After
> commenting out that section and using the following as a replacement:
> set beta_list [[atomselect $pdbrefID all] get beta]
> set NCG 0
> # jdex is for debugging purposes
> # set jdex -1
> foreach {beta_val} $beta_list {
> # incr jdex
> if {$beta_val > $NCG} {
> set NCG $beta_val
> }
> # puts $jdex
> }
> unset beta_list
> # There should not be any adverse effects from leaving the integer
> conversion
> # until the very end. The benefit of this is decreased computational
> load.
> set NCG [expr int($NCG)]
> ...the LJ parameter assignment works without crashing VMD. However, I
> want to know if it is possible to implement this change without
> 'hard-coding' the original cgtools.tcl package.¬
> The reason for this is because my patch is going to be included as part
> of my Principal Investigator's upcoming research paper, and that
> cgtools.tcl is the copyright of Axel Kohlmeyer. As a result, I obviously
> would not like to have to copy the rest of
> the¬ ::cgtools::sasa_LJ_networking procedure if I can avoid it.
> Sincerely,
> Timothy Leong
> References
> Visible links
> 1.

NIH Center for Macromolecular Modeling and Bioinformatics
Beckman Institute for Advanced Science and Technology
University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801           Phone: 217-244-3349