Opened 4 years ago

Closed 4 years ago

#4597 closed defect (fixed)

Crash adding second residue inside a break

Reported by: Tristan Croll Owned by: pett
Priority: normal Milestone:
Component: Structure Editing Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-3.10.0-1127.19.1.el7.x86_64-x86_64-with-glibc2.14
ChimeraX Version: 1.2.dev202103310726 (2021-03-31 07:26:37 UTC)
Description
Reproducibly getting a hard crash when adding the *second* residue to the inside of a chain break (adding to the C-terminal side of the break, if it matters). First adds fine. Second... kaboom. The model I'm working on is a confidential one from VIR that I definitely can't share... if needed I can try to set up a test case tomorrow. Meanwhile, here's the stack trace from GDB:

#0  0x00007ffff76bf387 in raise () at /lib64/libc.so.6
#1  0x00007ffff76c0a78 in abort () at /lib64/libc.so.6
#2  0x00007fffe7f7a7d5 in __gnu_cxx::__verbose_terminate_handler() ()
    at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95
#3  0x00007fffe7f78746 in __cxxabiv1::__terminate(void (*)()) (handler=<optimized out>) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:38
#4  0x00007fffe7f78773 in std::terminate() ()
    at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48
#5  0x00007fffe7f78993 in __cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*)) (obj=0x15de8720, tinfo=0x7fffe82051d0 <typeinfo for std::out_of_range>, dest=0x7fffe7f8cef0 <std::out_of_range::~out_of_range()>)
    at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:87
#6  0x00007fffe7fcd857 in std::__throw_out_of_range(char const*) (__s=__s@entry=0x7fffb47c0615 "map::at")
    at ../../../../../libstdc++-v3/src/c++11/functexcept.cc:80
#7  0x00007fffb4700b9c in atomstruct::Structure::_form_chain_check(atomstruct::Atom*, atomstruct::Atom*, atomstruct::Bond*) (__k=<optimized out>, this=<optimized out>) at atomic_cpp/atomstruct_cpp/Structure.cpp:856
#8  0x00007fffb4700b9c in atomstruct::Structure::_form_chain_check(atomstruct::Atom*, atomstruct::Atom*, atomstruct::Bond*) (this=<optimized out>, a1=
    0x1424af50, a2=<optimized out>, b=<optimized out>)
    at atomic_cpp/atomstruct_cpp/Structure.cpp:830
#9  0x00007fffb46b2851 in atomstruct::StructurePBGroup::new_pseudobond(atomstruc-------------Ty---Typ----------------------T----------Type <return> to continue, or q <return> to quit---
t::Atom*, atomstruct::Atom*) (this=0x6c2c230, a1=0x1424af50, a2=0x9b27180)
    at atomic_cpp/atomstruct_cpp/PBGroup.h:114
#10 0x00007fffb46ca424 in atomstruct::Residue::add_atom(atomstruct::Atom*) (this=<optimized out>, a=<optimized out>) at atomic_cpp/atomstruct_cpp/PBGroup.h:316
#11 0x00007fffb421e89b in __pyx_pw_8chimerax_6atomic_5cymol_9CyResidue_11add_atom(PyObject*, PyObject*) (__pyx_v_atom=0x7ffe79eea900, __pyx_v_self=0x7ffe79ef0480) at atomic_cpp/cymol.cpp:26674
#12 0x00007fffb421e89b in __pyx_pw_8chimerax_6atomic_5cymol_9CyResidue_11add_atom(PyObject*, PyObject*) (__pyx_v_self=0x7ffe79ef0480, __pyx_v_atom=0x7ffe79eea900) at atomic_cpp/cymol.cpp:26627
#13 0x00007ffff7b37432 in cfunction_vectorcall_O (func=0x7ffef1193720, args=0xb4ab8c0, nargsf=<optimized out>, kwnames=<optimized out>)
    at Objects/methodobject.c:482
#14 0x00007ffff7ac2d7d in call_function (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>)
    at ./Include/cpython/abstract.h:123


Log:
> alias preview_toolshed toolshed url https://cxtoolshed-
> preview.rbvi.ucsf.edu; toolshed reload available

> alias production_toolshed toolshed url https://cxtoolshed.rbvi.ucsf.edu;
> toolshed reload available

> alias st isolde step $*

> alias aw isolde add water $*

> alias awsf isolde add water sim false

> alias al isolde add ligand $*

> alias so setattr sel atoms occupancy $*

UCSF ChimeraX version: 1.2.dev202103310726 (2021-03-31)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  




OpenGL version: 3.3.0 NVIDIA 455.32.00
OpenGL renderer: TITAN Xp/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: Precision T5600
OS: CentOS Linux 7 Core
Architecture: 64bit ELF
Virutal Machine: none
CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
Cache Size: 20480 KB
Memory:
	              total        used        free      shared  buff/cache   available
	Mem:            62G        8.3G         37G        480M         16G         53G
	Swap:          4.9G          0B        4.9G

Graphics:
	03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP102 [TITAN Xp] [10de:1b02] (rev a1)	
	Subsystem: NVIDIA Corporation Device [10de:11df]	
	Kernel driver in use: nvidia
Locale: ('en_GB', 'UTF-8')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.0
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2020.12.5
    cftime: 1.4.1
    chardet: 3.0.4
    ChimeraX-AddCharge: 1.0
    ChimeraX-AddH: 2.1.4
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.12
    ChimeraX-AtomicLibrary: 3.0
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.5.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-Clipper: 0.15.0
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.2.1
    ChimeraX-CommandLine: 1.1.3
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.dev202103310726
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.1
    ChimeraX-DevelExtras: 0.4.0
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1
    ChimeraX-DistUI: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.0
    ChimeraX-Hbonds: 2.1
    ChimeraX-Help: 1.1
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.2.dev38
    ChimeraX-Label: 1.0
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1
    ChimeraX-Log: 1.1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.0.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.0
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 1.1
    ChimeraX-MDcrds: 2.2
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.3
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.0
    ChimeraX-ModelPanel: 1.0.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0
    ChimeraX-OpenCommand: 1.5
    ChimeraX-PDB: 2.4
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-Phenix: 0.2
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-ReadPbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.4
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.3
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.0
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.0.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.3
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0.1
    ChimeraX-ToolshedUtils: 1.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.7.1
    ChimeraX-uniprot: 2.1
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.3
    comtypes: 1.1.7
    cxservices: 1.0
    cycler: 0.10.0
    Cython: 0.29.21
    decorator: 4.4.2
    distlib: 0.3.1
    distro: 1.5.0
    docutils: 0.16
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 2.10.0
    html2text: 2020.1.16
    idna: 2.10
    ihm: 0.17
    imagecodecs: 2020.5.30
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.7.1
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.6.2
    lz4: 3.1.0
    MarkupSafe: 1.1.1
    matplotlib: 3.3.2
    msgpack: 1.0.0
    netCDF4: 1.5.4
    networkx: 2.5
    numexpr: 2.7.3
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.9
    ParmEd: 3.2.0
    parso: 0.7.1
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 21.0.1
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.18
    psutil: 5.7.2
    ptyprocess: 0.7.0
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.1
    pytz: 2021.1
    pyzmq: 22.0.3
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    setuptools: 50.3.2
    sfftk-rw: 0.6.7.dev1
    six: 1.15.0
    snowballstemmer: 2.1.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 1.0.3
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.4
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.36.0
    wheel-filename: 1.2.0

Attachments (3)

add_aa.py (8.1 KB ) - added by Tristan Croll 4 years ago.
Added by email2trac
addaa_bug.cxs (77.3 KB ) - added by Tristan Croll 4 years ago.
Added by email2trac
3io0_cut.pdb (128.8 KB ) - added by Tristan Croll 4 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (13)

in reply to:  1 ; comment:1 by Tristan Croll, 4 years ago

Test case for reproduction. Python script adds a command: "addaa {sel} {resname}". Selection must be an amino acid residue with exactly one existing peptide bond. To cause the crash:

open addaa_bug.cxs
open add_aa.py
addaa /A:88 LEU
addaa /A:87 LEU

Other observations:

  *   adding to the upstream side of a chain break doesn't cause a crash
  *   when adding in either direction, the initial missing-structure pseudobond is not removed (the new one is still created)

Important to know if this can be fixed before the 1.2 release, since some of my more advanced users already use this code for chain editing. Not a huge issue if it can't - I just need to know. The crash can be avoided if I do the pseudobond updating in the Python layer before the next graphics update.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 05 May 2021 20:55
To: Tristan Croll <tic20@cam.ac.uk>
Subject: [ChimeraX] #4597: ChimeraX bug report submission

#4597: ChimeraX bug report submission
---------------------------+-----------------------------
 Reporter:  Tristan Croll  |                Type:  defect
   Status:  new            |            Priority:  normal
Component:  Unassigned     |          Blocked By:
 Blocking:                 |  Notify when closed:
---------------------------+-----------------------------
 {{{
 The following bug report has been submitted:
 Platform:        Linux-3.10.0-1127.19.1.el7.x86_64-x86_64-with-glibc2.14
 ChimeraX Version: 1.2.dev202103310726 (2021-03-31 07:26:37 UTC)
 Description
 Reproducibly getting a hard crash when adding the *second* residue to the
 inside of a chain break (adding to the C-terminal side of the break, if it
 matters). First adds fine. Second... kaboom. The model I'm working on is a
 confidential one from VIR that I definitely can't share... if needed I can
 try to set up a test case tomorrow. Meanwhile, here's the stack trace from
 GDB:

 #0  0x00007ffff76bf387 in raise () at /lib64/libc.so.6
 #1  0x00007ffff76c0a78 in abort () at /lib64/libc.so.6
 #2  0x00007fffe7f7a7d5 in __gnu_cxx::__verbose_terminate_handler() ()
     at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95
 #3  0x00007fffe7f78746 in __cxxabiv1::__terminate(void (*)())
 (handler=<optimized out>) at
 ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:38
 #4  0x00007fffe7f78773 in std::terminate() ()
     at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48
 #5  0x00007fffe7f78993 in __cxxabiv1::__cxa_throw(void*, std::type_info*,
 void (*)(void*)) (obj=0x15de8720, tinfo=0x7fffe82051d0 <typeinfo for
 std::out_of_range>, dest=0x7fffe7f8cef0
 <std::out_of_range::~out_of_range()>)
     at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:87
 #6  0x00007fffe7fcd857 in std::__throw_out_of_range(char const*)
 (__s=__s@entry=0x7fffb47c0615 "map::at")
     at ../../../../../libstdc++-v3/src/c++11/functexcept.cc:80
 #7  0x00007fffb4700b9c in
 atomstruct::Structure::_form_chain_check(atomstruct::Atom*,
 atomstruct::Atom*, atomstruct::Bond*) (__k=<optimized out>,
 this=<optimized out>) at atomic_cpp/atomstruct_cpp/Structure.cpp:856
 #8  0x00007fffb4700b9c in
 atomstruct::Structure::_form_chain_check(atomstruct::Atom*,
 atomstruct::Atom*, atomstruct::Bond*) (this=<optimized out>, a1=
     0x1424af50, a2=<optimized out>, b=<optimized out>)
     at atomic_cpp/atomstruct_cpp/Structure.cpp:830
 #9  0x00007fffb46b2851 in
 atomstruct::StructurePBGroup::new_pseudobond(atomstruc-------------Ty---
 Typ----------------------T----------Type <return> to continue, or q
 <return> to quit---
 t::Atom*, atomstruct::Atom*) (this=0x6c2c230, a1=0x1424af50, a2=0x9b27180)
     at atomic_cpp/atomstruct_cpp/PBGroup.h:114
 #10 0x00007fffb46ca424 in atomstruct::Residue::add_atom(atomstruct::Atom*)
 (this=<optimized out>, a=<optimized out>) at
 atomic_cpp/atomstruct_cpp/PBGroup.h:316
 #11 0x00007fffb421e89b in
 __pyx_pw_8chimerax_6atomic_5cymol_9CyResidue_11add_atom(PyObject*,
 PyObject*) (__pyx_v_atom=0x7ffe79eea900, __pyx_v_self=0x7ffe79ef0480) at
 atomic_cpp/cymol.cpp:26674
 #12 0x00007fffb421e89b in
 __pyx_pw_8chimerax_6atomic_5cymol_9CyResidue_11add_atom(PyObject*,
 PyObject*) (__pyx_v_self=0x7ffe79ef0480, __pyx_v_atom=0x7ffe79eea900) at
 atomic_cpp/cymol.cpp:26627
 #13 0x00007ffff7b37432 in cfunction_vectorcall_O (func=0x7ffef1193720,
 args=0xb4ab8c0, nargsf=<optimized out>, kwnames=<optimized out>)
     at Objects/methodobject.c:482
 #14 0x00007ffff7ac2d7d in call_function (kwnames=<optimized out>,
 nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>)
     at ./Include/cpython/abstract.h:123


 Log:
 > alias preview_toolshed toolshed url https://cxtoolshed-
 > preview.rbvi.ucsf.edu; toolshed reload available

 > alias production_toolshed toolshed url https://cxtoolshed.rbvi.ucsf.edu;
 > toolshed reload available

 > alias st isolde step $*

 > alias aw isolde add water $*

 > alias awsf isolde add water sim false

 > alias al isolde add ligand $*

 > alias so setattr sel atoms occupancy $*

 UCSF ChimeraX version: 1.2.dev202103310726 (2021-03-31)
 © 2016-2020 Regents of the University of California. All rights reserved.
 How to cite UCSF ChimeraX




 OpenGL version: 3.3.0 NVIDIA 455.32.00
 OpenGL renderer: TITAN Xp/PCIe/SSE2
 OpenGL vendor: NVIDIA Corporation
 Manufacturer: Dell Inc.
 Model: Precision T5600
 OS: CentOS Linux 7 Core
 Architecture: 64bit ELF
 Virutal Machine: none
 CPU: 32 Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz
 Cache Size: 20480 KB
 Memory:
                       total        used        free      shared
 buff/cache   available
         Mem:            62G        8.3G         37G        480M
 16G         53G
         Swap:          4.9G          0B        4.9G

 Graphics:
         03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP102
 [TITAN Xp] [10de:1b02] (rev a1)
         Subsystem: NVIDIA Corporation Device [10de:11df]
         Kernel driver in use: nvidia
 Locale: ('en_GB', 'UTF-8')
 PyQt5 5.15.2, Qt 5.15.2
 Installed Packages:
     alabaster: 0.7.12
     appdirs: 1.4.4
     Babel: 2.9.0
     backcall: 0.2.0
     blockdiag: 2.0.1
     certifi: 2020.12.5
     cftime: 1.4.1
     chardet: 3.0.4
     ChimeraX-AddCharge: 1.0
     ChimeraX-AddH: 2.1.4
     ChimeraX-AlignmentAlgorithms: 2.0
     ChimeraX-AlignmentHdrs: 3.2
     ChimeraX-AlignmentMatrices: 2.0
     ChimeraX-Alignments: 2.1
     ChimeraX-AmberInfo: 1.0
     ChimeraX-Arrays: 1.0
     ChimeraX-Atomic: 1.12
     ChimeraX-AtomicLibrary: 3.0
     ChimeraX-AtomSearch: 2.0
     ChimeraX-AtomSearchLibrary: 1.0
     ChimeraX-AxesPlanes: 2.0
     ChimeraX-BasicActions: 1.1
     ChimeraX-BILD: 1.0
     ChimeraX-BlastProtein: 1.1
     ChimeraX-BondRot: 2.0
     ChimeraX-BugReporter: 1.0
     ChimeraX-BuildStructure: 2.5.1
     ChimeraX-Bumps: 1.0
     ChimeraX-BundleBuilder: 1.1
     ChimeraX-ButtonPanel: 1.0
     ChimeraX-CageBuilder: 1.0
     ChimeraX-CellPack: 1.0
     ChimeraX-Centroids: 1.1
     ChimeraX-ChemGroup: 2.0
     ChimeraX-Clashes: 2.1
     ChimeraX-Clipper: 0.15.0
     ChimeraX-ColorActions: 1.0
     ChimeraX-ColorGlobe: 1.0
     ChimeraX-ColorKey: 1.2.1
     ChimeraX-CommandLine: 1.1.3
     ChimeraX-ConnectStructure: 2.0
     ChimeraX-Contacts: 1.0
     ChimeraX-Core: 1.2.dev202103310726
     ChimeraX-CoreFormats: 1.0
     ChimeraX-coulombic: 1.1
     ChimeraX-Crosslinks: 1.0
     ChimeraX-Crystal: 1.0
     ChimeraX-CrystalContacts: 1.0
     ChimeraX-DataFormats: 1.1
     ChimeraX-DevelExtras: 0.4.0
     ChimeraX-Dicom: 1.0
     ChimeraX-DistMonitor: 1.1
     ChimeraX-DistUI: 1.0
     ChimeraX-Dssp: 2.0
     ChimeraX-EMDB-SFF: 1.0
     ChimeraX-ExperimentalCommands: 1.0
     ChimeraX-FileHistory: 1.0
     ChimeraX-FunctionKey: 1.0
     ChimeraX-Geometry: 1.1
     ChimeraX-gltf: 1.0
     ChimeraX-Graphics: 1.0
     ChimeraX-Hbonds: 2.1
     ChimeraX-Help: 1.1
     ChimeraX-HKCage: 1.3
     ChimeraX-IHM: 1.0
     ChimeraX-ImageFormats: 1.1
     ChimeraX-IMOD: 1.0
     ChimeraX-IO: 1.0.1
     ChimeraX-ISOLDE: 1.2.dev38
     ChimeraX-Label: 1.0
     ChimeraX-LinuxSupport: 1.0
     ChimeraX-ListInfo: 1.1
     ChimeraX-Log: 1.1.2
     ChimeraX-LookingGlass: 1.1
     ChimeraX-Maestro: 1.8.1
     ChimeraX-Map: 1.0.2
     ChimeraX-MapData: 2.0
     ChimeraX-MapEraser: 1.0
     ChimeraX-MapFilter: 2.0
     ChimeraX-MapFit: 2.0
     ChimeraX-MapSeries: 2.0
     ChimeraX-Markers: 1.0
     ChimeraX-Mask: 1.0
     ChimeraX-MatchMaker: 1.1
     ChimeraX-MDcrds: 2.2
     ChimeraX-MedicalToolbar: 1.0.1
     ChimeraX-Meeting: 1.0
     ChimeraX-MLP: 1.1
     ChimeraX-mmCIF: 2.3
     ChimeraX-MMTF: 2.1
     ChimeraX-Modeller: 1.0
     ChimeraX-ModelPanel: 1.0.1
     ChimeraX-ModelSeries: 1.0
     ChimeraX-Mol2: 2.0
     ChimeraX-Morph: 1.0
     ChimeraX-MouseModes: 1.1
     ChimeraX-Movie: 1.0
     ChimeraX-Neuron: 1.0
     ChimeraX-Nucleotides: 2.0
     ChimeraX-OpenCommand: 1.5
     ChimeraX-PDB: 2.4
     ChimeraX-PDBBio: 1.0
     ChimeraX-PDBLibrary: 1.0
     ChimeraX-PDBMatrices: 1.0
     ChimeraX-Phenix: 0.2
     ChimeraX-PickBlobs: 1.0
     ChimeraX-Positions: 1.0
     ChimeraX-PresetMgr: 1.0.1
     ChimeraX-PubChem: 2.0.1
     ChimeraX-ReadPbonds: 1.0
     ChimeraX-Registration: 1.1
     ChimeraX-RemoteControl: 1.0
     ChimeraX-ResidueFit: 1.0
     ChimeraX-RestServer: 1.1
     ChimeraX-RNALayout: 1.0
     ChimeraX-RotamerLibMgr: 2.0
     ChimeraX-RotamerLibsDunbrack: 2.0
     ChimeraX-RotamerLibsDynameomics: 2.0
     ChimeraX-RotamerLibsRichardson: 2.0
     ChimeraX-SaveCommand: 1.4
     ChimeraX-SchemeMgr: 1.0
     ChimeraX-SDF: 2.0
     ChimeraX-Segger: 1.0
     ChimeraX-Segment: 1.0
     ChimeraX-SeqView: 2.3
     ChimeraX-Shape: 1.0.1
     ChimeraX-Shell: 1.0
     ChimeraX-Shortcuts: 1.0
     ChimeraX-ShowAttr: 1.0
     ChimeraX-ShowSequences: 1.0
     ChimeraX-SideView: 1.0
     ChimeraX-Smiles: 2.0.1
     ChimeraX-SmoothLines: 1.0
     ChimeraX-SpaceNavigator: 1.0
     ChimeraX-StdCommands: 1.3
     ChimeraX-STL: 1.0
     ChimeraX-Storm: 1.0
     ChimeraX-Struts: 1.0
     ChimeraX-Surface: 1.0
     ChimeraX-SwapAA: 2.0
     ChimeraX-SwapRes: 2.1
     ChimeraX-TapeMeasure: 1.0
     ChimeraX-Test: 1.0
     ChimeraX-Toolbar: 1.0.1
     ChimeraX-ToolshedUtils: 1.1
     ChimeraX-Tug: 1.0
     ChimeraX-UI: 1.7.1
     ChimeraX-uniprot: 2.1
     ChimeraX-UnitCell: 1.0
     ChimeraX-ViewDockX: 1.0
     ChimeraX-Vive: 1.1
     ChimeraX-VolumeMenu: 1.0
     ChimeraX-VTK: 1.0
     ChimeraX-WavefrontOBJ: 1.0
     ChimeraX-WebCam: 1.0
     ChimeraX-WebServices: 1.0
     ChimeraX-Zone: 1.0
     colorama: 0.4.3
     comtypes: 1.1.7
     cxservices: 1.0
     cycler: 0.10.0
     Cython: 0.29.21
     decorator: 4.4.2
     distlib: 0.3.1
     distro: 1.5.0
     docutils: 0.16
     filelock: 3.0.12
     funcparserlib: 0.3.6
     grako: 3.16.5
     h5py: 2.10.0
     html2text: 2020.1.16
     idna: 2.10
     ihm: 0.17
     imagecodecs: 2020.5.30
     imagesize: 1.2.0
     ipykernel: 5.3.4
     ipython: 7.18.1
     ipython-genutils: 0.2.0
     jedi: 0.17.2
     Jinja2: 2.11.2
     jupyter-client: 6.1.7
     jupyter-core: 4.7.1
     kiwisolver: 1.3.1
     line-profiler: 2.1.2
     lxml: 4.6.2
     lz4: 3.1.0
     MarkupSafe: 1.1.1
     matplotlib: 3.3.2
     msgpack: 1.0.0
     netCDF4: 1.5.4
     networkx: 2.5
     numexpr: 2.7.3
     numpy: 1.19.2
     numpydoc: 1.1.0
     openvr: 1.14.1501
     packaging: 20.9
     ParmEd: 3.2.0
     parso: 0.7.1
     pexpect: 4.8.0
     pickleshare: 0.7.5
     Pillow: 7.2.0
     pip: 21.0.1
     pkginfo: 1.5.0.1
     prompt-toolkit: 3.0.18
     psutil: 5.7.2
     ptyprocess: 0.7.0
     pycollada: 0.7.1
     pydicom: 2.0.0
     Pygments: 2.7.1
     PyOpenGL: 3.1.5
     PyOpenGL-accelerate: 3.1.5
     pyparsing: 2.4.7
     PyQt5-commercial: 5.15.2
     PyQt5-sip: 12.8.1
     PyQtWebEngine-commercial: 5.15.2
     python-dateutil: 2.8.1
     pytz: 2021.1
     pyzmq: 22.0.3
     qtconsole: 4.7.7
     QtPy: 1.9.0
     RandomWords: 0.3.0
     requests: 2.24.0
     scipy: 1.5.2
     setuptools: 50.3.2
     sfftk-rw: 0.6.7.dev1
     six: 1.15.0
     snowballstemmer: 2.1.0
     sortedcontainers: 2.2.2
     Sphinx: 3.2.1
     sphinxcontrib-applehelp: 1.0.2
     sphinxcontrib-blockdiag: 2.0.0
     sphinxcontrib-devhelp: 1.0.2
     sphinxcontrib-htmlhelp: 1.0.3
     sphinxcontrib-jsmath: 1.0.1
     sphinxcontrib-qthelp: 1.0.3
     sphinxcontrib-serializinghtml: 1.1.4
     suds-jurko: 0.6
     tables: 3.6.1
     tifffile: 2020.9.3
     tinyarray: 1.2.3
     tornado: 6.1
     traitlets: 5.0.5
     urllib3: 1.25.11
     wcwidth: 0.2.5
     webcolors: 1.11.1
     wheel: 0.36.0
     wheel-filename: 1.2.0

 }}}

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4597>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

add_aa.py

addaa_bug.cxs

by Tristan Croll, 4 years ago

Attachment: add_aa.py added

Added by email2trac

by Tristan Croll, 4 years ago

Attachment: addaa_bug.cxs added

Added by email2trac

comment:2 by pett, 4 years ago

Component: UnassignedStructure Editing
Owner: set to pett
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionCrash adding second residue inside a break

comment:3 by pett, 4 years ago

So one problem is that the session has two identical missing-structure pseudobonds across that same gap. The automatic adjustment code only looks for one, so the second just hangs around. I would need to know how the multiple pseudobonds got there in the first place to resolve that part of this ticket.

in reply to:  6 comment:4 by Tristan Croll, 4 years ago

The extra pseudobond seems to be a ChimeraX bug (that's probably been hanging around for a long time - I've seen this "first pseudobond doesn't disappear when building into a gap" issue many times). If I open the attached model in a vanilla session, then:

pbg = session.models.list()[1]

len(pbg.pseudobonds)
Out[2]: 2

for pb in pbg.pseudobonds:
    print('-'.join(f'{a.residue.chain_id}{a.residue.number}:{a.name}' for a in pb.atoms))

A83:C-A88:N
A83:C-A88:N

________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 07 May 2021 18:45
Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4597: Crash adding second residue inside a break

#4597: Crash adding second residue inside a break
----------------------------------------+----------------------------
          Reporter:  Tristan Croll      |      Owner:  Eric Pettersen
              Type:  defect             |     Status:  accepted
          Priority:  normal             |  Milestone:
         Component:  Structure Editing  |    Version:
        Resolution:                     |   Keywords:
        Blocked By:                     |   Blocking:
Notify when closed:                     |   Platform:  all
           Project:  ChimeraX           |
----------------------------------------+----------------------------

Comment (by Eric Pettersen):

 So one problem is that the session has two identical missing-structure
 pseudobonds across that same gap.  The automatic adjustment code only
 looks for one, so the second just hangs around.  I would need to know how
 the multiple pseudobonds got there in the first place to resolve that part
 of this ticket.

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4597#comment:3>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

3io0_cut.pdb

by Tristan Croll, 4 years ago

Attachment: 3io0_cut.pdb added

Added by email2trac

comment:5 by pett, 4 years ago

Okay, fixed both problems. The duplicate pseudobond was because the code that takes the initial structure and adds bonds and pseudobonds no longer needs to explicitly create a pseudobond when it deletes a long "bond" spanning a gap, so doing so produced a duplicate.

The other problem had to do with the new residue getting placed on the wrong side of the gap in the Chain's mapping of sequence to residue.

It could still get it wrong in esoteric situations such as filling in the middle of a gap and using an out of sequence residue number, but that kind of bullet-proofing will have to wait for another day.

in reply to:  9 ; comment:6 by Tristan Croll, 4 years ago

Thanks very much! Will this still sneak into the official 1.2?
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 07 May 2021 20:07
Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4597: Crash adding second residue inside a break

#4597: Crash adding second residue inside a break
----------------------------------------+----------------------------
          Reporter:  Tristan Croll      |      Owner:  Eric Pettersen
              Type:  defect             |     Status:  accepted
          Priority:  normal             |  Milestone:
         Component:  Structure Editing  |    Version:
        Resolution:                     |   Keywords:
        Blocked By:                     |   Blocking:
Notify when closed:                     |   Platform:  all
           Project:  ChimeraX           |
----------------------------------------+----------------------------

Comment (by Eric Pettersen):

 Okay, fixed both problems.  The duplicate pseudobond was because the code
 that takes the initial structure and adds bonds and pseudobonds no longer
 needs to explicitly create a pseudobond when it deletes a long "bond"
 spanning a gap, so doing so produced a duplicate.

 The other problem had to do with the new residue getting placed on the
 wrong side of the gap in the Chain's mapping of sequence to residue.

 It could still get it wrong in esoteric situations such as filling in the
 middle of a gap and using an out of sequence residue number, but that kind
 of bullet-proofing will have to wait for another day.

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4597#comment:5>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

in reply to:  10 comment:7 by pett, 4 years ago

Well, 1.2.2, but yes.

in reply to:  11 comment:8 by Tristan Croll, 4 years ago

Great!
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: 07 May 2021 20:10
To: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>
Subject: Re: [ChimeraX] #4597: Crash adding second residue inside a break

#4597: Crash adding second residue inside a break
----------------------------------------+----------------------------
          Reporter:  Tristan Croll      |      Owner:  Eric Pettersen
              Type:  defect             |     Status:  accepted
          Priority:  normal             |  Milestone:
         Component:  Structure Editing  |    Version:
        Resolution:                     |   Keywords:
        Blocked By:                     |   Blocking:
Notify when closed:                     |   Platform:  all
           Project:  ChimeraX           |
----------------------------------------+----------------------------

Comment (by Eric Pettersen):

 {{{
 Well, 1.2.2, but yes.

 }}}

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4597#comment:7>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

comment:9 by Tristan Croll, 4 years ago

Can confirm that the crash no longer occurs, but the double-pseudobond problem is back (in both 1.2.5 and the daily build).

comment:10 by Tristan Croll, 4 years ago

Resolution: fixed
Status: acceptedclosed

Oh wait - my bad. I was running from the saved test session (which of course still had the spurious chain-break pseudobond). Testing on a freshly-opened PDB works fine. :)

Note: See TracTickets for help on using tickets.