Skip to content

Release v2.6.1

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Jun 15:54
· 1 commit to main since this release
  • bugfix: large membrane-embedding builds aborted at the end of the make_membrane_system embed step with a VMD segmentation fault (signal 11), even though the embedded, solvated, and neutralized system had already been written correctly. The clash-removal steps in bilayer_embed.tcl built atomselect "index <list>" selections directly from the per-atom index lists returned by measure contacts; on a large solvated system those lists run to ~10^5 atoms, and VMD's atom-selection parse tree has one node per index whose destructor (atomparser_node::~atomparser_node) is recursive — so freeing such a selection recurses ~10^5 frames deep and overflows the stack during interpreter teardown at VMD exit (confirmed via core dump: VMDApp::~VMDAppDeleteInterpProcAtomSel::~AtomSelParseTree::~ParseTree → hundreds of thousands of nested ~atomparser_node frames). The crash was purely in at-exit teardown but returned signal 11 and aborted the whole build, and it reproduced on VMD 1.9.3, 2.0.0, and 2.0.1a1 (it is a long-standing VMD bug, not version-specific). The clashing atoms are now mapped to (segname, resid) by reading directly from the parent whole-molecule (all) selection's attribute lists, so no large index selection — and no large parse tree — is ever constructed
  • bugfix: the same clash-removal loops invoked delatom $seg $resid (which deletes an entire residue) once per contacting atom rather than once per residue, so a lipid or water with several atoms near the protein was deleted on the first call and then re-deleted on every subsequent atom — emitting tens of thousands of no residue ... of segment ... messages on a large embed. Each clashing residue is now deduplicated and deleted exactly once
  • enhancement: embed_protein no longer appends a spurious trailing regenerate angles dihedrals to the embed psfgen script. It called writescript(regenerate=True, writepsf=False, writepdb=False), which emitted a regenerate with no following writepsf/writepdb to consume it — pure wasted work regenerating angles and dihedrals for the ~2M-atom post-autoionize context. The bilayer_embed script already regenerates before each structure it writes, so embed_protein now uses regenerate=False (matching the sibling quilt call site)