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)
Change History (13)
follow-up: 1 comment:1 by , 4 years ago
comment:2 by , 4 years ago
Component: | Unassigned → Structure Editing |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → accepted |
Summary: | ChimeraX bug report submission → Crash adding second residue inside a break |
comment:3 by , 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.
comment:4 by , 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
comment:5 by , 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.
follow-up: 4 comment:6 by , 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
comment:8 by , 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
follow-up: 6 comment:9 by , 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).
follow-up: 7 comment:10 by , 4 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
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. :)
add_aa.py
addaa_bug.cxs