Opened 5 years ago
Closed 5 years ago
#3694 closed defect (fixed)
Crash adding then deleting residue
| Reported by: | Tristan Croll | Owned by: | Eric Pettersen |
|---|---|---|---|
| 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.