Opened 5 years ago

Closed 5 years ago

#3441 closed defect (fixed)

somewhat unusual chain editing causes crash

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.10.1.el7.x86_64-x86_64-with-centos-7.8.2003-Core
ChimeraX Version: 1.0 (2020-06-04 23:15:07 UTC)
Description
Accidentally merged in a series of residues with chain ID 'A' and linked the C-terminal one to the next residue in chain 'B' (using the code at https://github.com/tristanic/isolde/blob/63ee53d06cce45f892fb2a31ca869026920dc4f0/isolde/src/atomic/building/merge.py#L3 - which I do need to rewrite since it's doing things that should now be superfluous after Eric's changes to make pseudobonds automatically update). Forgot to include the argument `chain_id='B'`... anyway, I deleted the new residues when I realised my mistake, which killed ChimeraX with the crash message below. I believe this is the only circumstance in which I've seen this crash happen. 

terminate called after throwing an instance of 'std::runtime_error'
  what():  Calling [C++: N10atomstruct5ChainE] _cpp_modified failed.
Fatal Python error: Aborted

Thread 0x00007f0cec7fc700 (most recent call first):
  File "/opt/UCSF/ChimeraX/lib/python3.7/selectors.py", line 468 in select
  File "/opt/UCSF/ChimeraX/lib/python3.7/asyncio/base_events.py", line 1750 in _run_once
  File "/opt/UCSF/ChimeraX/lib/python3.7/asyncio/base_events.py", line 541 in run_forever
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/tornado/platform/asyncio.py", line 149 in start
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ipykernel/iostream.py", line 78 in _thread_main
  File "/opt/UCSF/ChimeraX/lib/python3.7/threading.py", line 870 in run
  File "/opt/UCSF/ChimeraX/lib/python3.7/threading.py", line 926 in _bootstrap_inner
  File "/opt/UCSF/ChimeraX/lib/python3.7/threading.py", line 890 in _bootstrap

Current thread 0x00007f0ee9cea740 (most recent call first):
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/atomic/molarray.py", line 726 in delete
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/std_commands/delete.py", line 39 in delete_atoms
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/std_commands/delete.py", line 22 in delete
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/core/commands/cli.py", line 2805 in run
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/cmd_line/tool.py", line 258 in execute
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/chimerax/cmd_line/tool.py", line 112 in keyPressEvent
  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 763 in init
  File "/opt/UCSF/ChimeraX/lib/python3.7/site-packages/ChimeraX_main.py", line 895 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
Aborted (core dumped)


OpenGL version: 3.3.0 NVIDIA 450.36.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         11G         42G        198M        9.5G         50G
	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.8

Change History (4)

comment:1 by pett, 5 years ago

Component: UnassignedStructure Editing
Owner: set to pett
Platform: all
Project: ChimeraX
Status: newaccepted
Summary: ChimeraX bug report submissionsomewhat unusual chain editing causes crash

The throw that caused the crash _should_ be caught by molc.cpp and converted into a Python error (and not crash) -- unless your own (or other) C++ was making direct calls to delete atoms/residues, which doesn't seem to be the case here AFAICT.

It may be a little while before I get to this due to it being a very narrow problem and the anticipated difficulty of getting the reproducible scenario set up in my build.

comment:2 by Tristan Croll, 5 years ago

This reliably reproduces it:

from chimerax.open_command.cmd import provider_open
m = provider_open(session, ['1zni'])[0]
r1 = m.chains[0].residues[-1]
r2 = m.chains[2].residues[0]
r1.find_atom('OXT').delete()
m.new_bond(r1.find_atom('C'), r2.find_atom('N'))
from chimerax.core.commands import run
run(session, 'delete /A')

comment:3 by pett, 5 years ago

Thanks! That will be helpful.

comment:4 by pett, 5 years ago

Resolution: fixed
Status: acceptedclosed

When chain C got merged into chain A, the chain C object got "demoted" to a StructureSeq from a Chain. When the residues it referred to were deleted ("delete /A"), it was doing some things that it should only do if it's still a Chain.

Note: See TracTickets for help on using tickets.