Opened 5 years ago
Closed 5 years ago
#3694 closed defect (fixed)
Crash adding then deleting residue
Reported by: | Tristan Croll | Owned by: | pett |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | |
Keywords: | Cc: | Tom Goddard | |
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-centos-7.8.2003-Core ChimeraX Version: 1.1rc202009022202 (2020-09-02 22:02:29 UTC) Description Adding a residue to the N-terminus of a chain and then deleting it causes a segmentation fault in _make_ribbon_graphics() (possibly at other positions in the chain as well - haven't tried). Looks like somehow the deleted residue is still being queried? (command line) open 3fhr sel /A:33 (shell) m = session.models.list()[0] from chimerax.isolde.atomic.building.build_utils import add_amino_acid_residue from chimerax.atomic import selected_residues add_amino_acid_residue(m, 'PRO', next_res=selected_residues(session)[0]) (command line) del /A:32 <segfault> Current thread 0x00007f55055c9740 (most recent call first): File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/molc.py", line 195 in get_prop File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/ribbon.py", line 96 in _make_ribbon_graphics File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/ribbon.py", line 588 in compute_ribbons File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/structure.py", line 559 in _create_ribbon_graphics File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/structure.py", line 302 in update_graphics_if_needed File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/structure.py", line 1567 in _update_graphics_if_needed File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/triggerset.py", line 130 in invoke File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/triggerset.py", line 213 in _activate File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/triggerset.py", line 182 in activate File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/triggerset.py", line 350 in activate_trigger File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/graphics/view.py", line 269 in check_for_drawing_change File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/updateloop.py", line 65 in draw_new_frame File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/updateloop.py", line 138 in _redraw_timer_callback File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/ui/gui.py", line 269 in event_loop File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ChimeraX_main.py", line 772 in init File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ChimeraX_main.py", line 919 in <module> File "/opt/UCSF/ChimeraX/lib/python3.7/runpy.py", line 85 in _run_code File "/opt/UCSF/ChimeraX/lib/python3.7/runpy.py", line 193 in _run_module_as_main Program received signal SIGSEGV, Segmentation fault. 0x00007fffb072b55a in residue_secondary_structure_id () from /opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/libmolc.so Missing separate debuginfos, use: debuginfo-install ucsf-chimerax-1.1-0.2020.09.02.el7.x86_64 (gdb) bt #0 0x00007fffb072b55a in residue_secondary_structure_id () at /opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/libmolc.so #1 0x00007fffe760de2c in ffi_call_unix64 () at /lib64/libffi.so.6 #2 0x00007fffe760d755 in ffi_call () at /lib64/libffi.so.6 #3 0x00007fffe78221fa in _ctypes_callproc (argcount=3, resmem=0x7fffffffa6d0, restype=<optimized out>, atypes=<optimized out>, avalues=0x7fffffffa6a0, pProc=0x7fffb072b240 <residue_secondary_structure_id>, flags=4357) at ./tmp/Python-3.7.8/Modules/_ctypes/callproc.c:829 #4 0x00007fffe78221fa in _ctypes_callproc (pProc=pProc@entry=0x7fffb072b240 <residue_secondary_structure_id>, argtuple=argtuple@entry=0x7ffe9110cb40, Log: UCSF ChimeraX version: 1.1rc202009022202 (2020-09-02) © 2016-2020 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX OpenGL version: 3.3.0 NVIDIA 450.51.06 OpenGL renderer: TITAN Xp/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation Manufacturer: Dell Inc. Model: Precision T5600 OS: CentOS Linux 7 Core Architecture: 64bit ELF 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 4.9G 48G 255M 9.7G 57G 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 PyQt version: 5.12.3 Compiled Qt version: 5.12.4 Runtime Qt version: 5.12.9 Installed Packages: alabaster: 0.7.12 appdirs: 1.4.4 Babel: 2.8.0 backcall: 0.2.0 blockdiag: 2.0.1 certifi: 2020.6.20 chardet: 3.0.4 ChimeraX-AddH: 2.1.1 ChimeraX-AlignmentAlgorithms: 2.0 ChimeraX-AlignmentHdrs: 3.2 ChimeraX-AlignmentMatrices: 2.0 ChimeraX-Alignments: 2.1 ChimeraX-Arrays: 1.0 ChimeraX-Atomic: 1.6.1 ChimeraX-AtomSearch: 2.0 ChimeraX-AxesPlanes: 2.0 ChimeraX-BasicActions: 1.1 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 1.0.1 ChimeraX-BondRot: 2.0 ChimeraX-BugReporter: 1.0 ChimeraX-BuildStructure: 2.0 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.0 ChimeraX-ButtonPanel: 1.0 ChimeraX-CageBuilder: 1.0 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.1 ChimeraX-ChemGroup: 2.0 ChimeraX-Clashes: 2.0 ChimeraX-Clipper: 0.15.0 ChimeraX-ColorActions: 1.0 ChimeraX-ColorGlobe: 1.0 ChimeraX-CommandLine: 1.1.3 ChimeraX-ConnectStructure: 2.0 ChimeraX-Contacts: 1.0 ChimeraX-Core: 1.1rc202009022202 ChimeraX-CoreFormats: 1.0 ChimeraX-coulombic: 1.0.1 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-DataFormats: 1.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.0 ChimeraX-Help: 1.0 ChimeraX-HKCage: 1.0 ChimeraX-IHM: 1.0 ChimeraX-ImageFormats: 1.0 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0 ChimeraX-ISOLDE: 1.0.2 ChimeraX-Label: 1.0 ChimeraX-LinuxSupport: 1.0 ChimeraX-ListInfo: 1.0 ChimeraX-Log: 1.1.1 ChimeraX-LookingGlass: 1.1 ChimeraX-Map: 1.0.1 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.0 ChimeraX-MedicalToolbar: 1.0.1 ChimeraX-Meeting: 1.0 ChimeraX-MLP: 1.0 ChimeraX-mmCIF: 2.2 ChimeraX-MMTF: 2.0 ChimeraX-Modeller: 1.0 ChimeraX-ModelPanel: 1.0 ChimeraX-ModelSeries: 1.0 ChimeraX-Mol2: 2.0 ChimeraX-Morph: 1.0 ChimeraX-MouseModes: 1.0 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nucleotides: 2.0 ChimeraX-OpenCommand: 1.2.1 ChimeraX-PDB: 2.1 ChimeraX-PDBBio: 1.0 ChimeraX-Phenix: 0.1 ChimeraX-PickBlobs: 1.0 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.0 ChimeraX-PubChem: 2.0 ChimeraX-Read-Pbonds: 1.0 ChimeraX-Registration: 1.1 ChimeraX-RemoteControl: 1.0 ChimeraX-ResidueFit: 1.0 ChimeraX-RestServer: 1.0 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 2.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.2 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0 ChimeraX-SeqView: 2.2 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 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.0.4 ChimeraX-STL: 1.0 ChimeraX-Storm: 1.0 ChimeraX-Struts: 1.0 ChimeraX-Surface: 1.0 ChimeraX-SwapAA: 2.0 ChimeraX-SwapRes: 2.0 ChimeraX-TapeMeasure: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.0 ChimeraX-ToolshedUtils: 1.0 ChimeraX-Tug: 1.0 ChimeraX-UI: 1.2.3 ChimeraX-uniprot: 2.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.20 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 graphviz: 0.14.1 h5py: 2.10.0 html2text: 2020.1.16 idna: 2.10 ihm: 0.16 imagecodecs: 2020.5.30 imagecodecs-lite: 2020.1.31 imagesize: 1.2.0 ipykernel: 5.3.0 ipython: 7.15.0 ipython-genutils: 0.2.0 jedi: 0.17.2 Jinja2: 2.11.2 jupyter-client: 6.1.3 jupyter-core: 4.6.3 kiwisolver: 1.2.0 line-profiler: 2.1.2 lxml: 4.5.1 MarkupSafe: 1.1.1 matplotlib: 3.2.1 msgpack: 1.0.0 netifaces: 0.10.9 networkx: 2.4 numexpr: 2.7.1 numpy: 1.18.5 numpydoc: 1.0.0 objgraph: 3.4.1 openvr: 1.12.501 packaging: 20.4 parso: 0.7.1 pexpect: 4.8.0 pickleshare: 0.7.5 Pillow: 7.1.2 pip: 20.2.2 pkginfo: 1.5.0.1 prompt-toolkit: 3.0.7 psutil: 5.7.0 ptyprocess: 0.6.0 pycollada: 0.7.1 pydicom: 2.0.0 Pygments: 2.6.1 PyOpenGL: 3.1.5 PyOpenGL-accelerate: 3.1.5 pyparsing: 2.4.7 PyQt5-commercial: 5.12.3 PyQt5-sip: 4.19.19 PyQtWebEngine-commercial: 5.12.1 python-dateutil: 2.8.1 pytz: 2020.1 pyzmq: 19.0.2 qtconsole: 4.7.4 QtPy: 1.9.0 RandomWords: 0.3.0 requests: 2.24.0 scipy: 1.4.1 setuptools: 49.4.0 sfftk-rw: 0.6.6.dev0 six: 1.15.0 snowballstemmer: 2.0.0 sortedcontainers: 2.2.2 Sphinx: 3.1.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.6.3 tinyarray: 1.2.2 tornado: 6.0.4 traitlets: 5.0.2 urllib3: 1.25.10 wcwidth: 0.2.5 webcolors: 1.11.1 wheel: 0.34.2
Change History (14)
comment:1 by , 5 years ago
Cc: | added |
---|---|
Component: | Unassigned → Core |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Crash adding then deleting residue |
comment:2 by , 5 years ago
The crash happens after a redraw timer goes off so ChimeraX is back to the event loop. So this does not look like at timing issue -- it looks like the residue delete simply does not remove the residue from the Residues collection. I don't know what the timing is of residues being removed from arrays, Eric knows that, but it certainly cannot be delayed until after the event loop gets control.
comment:3 by , 5 years ago
Thanks for the precise steps to reproduce the crash. Does it happen every time for you?
The crash does not happen in ChimeraX 1.0 following the exact steps, tried 2 times. I do not have ISOLDE for ChimeraX 1.1 RC so I cannot reproduce the problem. Can you provide wheels for ISOLDE and Clipper (if needed) so I can reproduce the crash with 1.1 rc?
comment:4 by , 5 years ago
The Array_Updater class in molc.cpp is a direct DestructionObserver, so it isn't waiting for any Python-level triggers for sure.
comment:5 by , 5 years ago
Skipping the ISOLDE adding of a residue and just deleting the terminal /A:33 does not cause a crash. If that does not cause a crash for you I would be concerned that the ISOLDE code that added the residue did not add it properly. Do you add it purely from Python or do you use C++?
follow-up: 6 comment:6 by , 5 years ago
Reproduced 4 times in a row on my Linux machine (first 3 with ISOLDE running; 4th from a fresh start using only the steps described). Can provide wheels in the morning- I take it you’d prefer Mac?
follow-up: 7 comment:7 by , 5 years ago
The addition code only uses Python. I also tried simply deleting a terminal residue and didn’t trigger a crash, so it’s something about the sequential addition then deletion that does it.
follow-up: 8 comment:8 by , 5 years ago
The add_amino_acid_residue() method lives at https://github.com/tristanic/isolde/blob/874878bbc4699ec4811760379af3a83c03742064/isolde/src/atomic/building/build_utils.py#L110. It's pretty much independent from the rest of ISOLDE (requires new_residue_from_template() from https://github.com/tristanic/isolde/blob/874878bbc4699ec4811760379af3a83c03742064/isolde/src/atomic/building/place_ligand.py#L153 and set_new_atom_style() from https://github.com/tristanic/isolde/blob/874878bbc4699ec4811760379af3a83c03742064/isolde/src/atomic/building/__init__.py#L9; all other dependencies are ChimeraX or vanilla Python stuff) so if you wanted to test urgently it wouldn't be too difficult to cut these out into a standalone script. On 2020-09-08 20:06, ChimeraX wrote:
follow-up: 9 comment:9 by , 5 years ago
Thanks, I'll wait for the wheels. Mac would be best. If it does not reproduce on Mac then I can try Linux.
follow-up: 10 comment:10 by , 5 years ago
Mac builds are on my Google Drive. Clipper: https://drive.google.com/file/d/123n5On8WrCv7Itqh8Vragb_sx8JDttpm/view?usp=sharing ISOLDE: https://drive.google.com/file/d/1R0agQle24wQlftEjiDDnz9lh21T1oiMW/view?usp=sharing Also crashes here, albeit subtly different. First time didn't crash until I repeated the add-residue step (i.e. added, deleted, then added again). Second time crashed right on cue. On 2020-09-08 22:27, ChimeraX wrote:
comment:12 by , 5 years ago
Cc: | added; removed |
---|---|
Owner: | changed from | to
comment:13 by , 5 years ago
Status: | assigned → accepted |
---|
comment:14 by , 5 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
For the specific case of a residue being added into the missing-structure part of a chain, the residue's 'chain' attribute wasn't being set.
Apparently asking for the secondary-structure ID of a dead residue. Which means that the Residues collection being used by the ribbon code hasn't yet been cleared of dead residues when used -- which implies a timing issue.