Opened 4 years ago

Closed 4 years ago

#6440 closed defect (can't reproduce)

Crash calculating mesh edges for square mesh volume display

Reported by: chimerax-bug-report@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Volume Data Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19044
ChimeraX Version: 1.3 (2021-12-08 23:08:33 UTC)
Description
Last time you used ChimeraX it crashed.
Please describe steps that led to the crash here.
Windows fatal exception: access violation

Current thread 0x00004740 (most recent call first):
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 2225 in _adjust_surface_geometry
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 2195 in _calculate_contour_surface
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 2101 in update_surface
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 805 in _update_surfaces
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 782 in update_drawings
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\map\volume.py", line 4010 in _update_drawings
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\triggerset.py", line 134 in invoke
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\triggerset.py", line 217 in _activate
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\triggerset.py", line 186 in activate
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\triggerset.py", line 354 in activate_trigger
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\graphics\view.py", line 271 in check_for_drawing_change
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\updateloop.py", line 65 in draw_new_frame
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\core\updateloop.py", line 139 in _redraw_timer_callback
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\chimerax\ui\gui.py", line 301 in event_loop
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\ChimeraX_main.py", line 867 in init
  File "C:\Program Files\ChimeraX 1.3\bin\lib\site-packages\ChimeraX_main.py", line 1018 in 
  File "C:\Program Files\ChimeraX 1.3\bin\lib\runpy.py", line 87 in _run_code
  File "C:\Program Files\ChimeraX 1.3\bin\lib\runpy.py", line 197 in _run_module_as_main
===== Log before crash start =====
> open D:\RawData\BDC\model_building\MCC_fitmap_J1013_updated.pdb format pdb

Summary of feedback from opening
D:\RawData\BDC\model_building\MCC_fitmap_J1013_updated.pdb  
---  
warnings | Start residue of secondary structure not found: HELIX 1 1 GLU A 59
LEU A 71 1 13  
Start residue of secondary structure not found: HELIX 2 2 MET A 87 MET A 91 1
5  
Start residue of secondary structure not found: HELIX 3 3 GLU A 111 SER A 120
1 10  
Start residue of secondary structure not found: HELIX 4 4 MET A 136 GLU A 145
1 10  
Start residue of secondary structure not found: HELIX 5 5 PRO A 154 ARG A 158
1 5  
99 messages similar to the above omitted  
  
Chain information for MCC_fitmap_J1013_updated.pdb  
---  
Chain | Description  
1.1/A | No description available  
1.1/B | No description available  
  

> close session

> open C:/Users/Fayang/Downloads/Structure2D_CID_23662274.sdf
> C:/Users/Fayang/Downloads/Structure2D_CID_444493.sdf
> C:/Users/Fayang/Downloads/Structure2D_CID_45266613.sdf

PubChem entry 23662274  
  
PubChem entry 444493  
  
PubChem entry 45266613  
  

> ui mousemode right "translate selected models"

> select #1

10 atoms, 8 bonds, 1 residue, 1 model selected  

> view matrix models #1,1,0,0,0.22621,0,1,0,6.2731,0,0,1,-1.1852

> select #2

89 atoms, 91 bonds, 1 residue, 1 model selected  

> view matrix models #2,1,0,0,1.0471,0,1,0,-6.6792,0,0,1,1.2395

> open
> C:/Users/Fayang/Downloads/MCC_cryosparc_P449_J565_004_volume_map_sharp.mrc

Opened MCC_cryosparc_P449_J565_004_volume_map_sharp.mrc as #4, grid size
480,480,480, pixel 1.08, shown at level 0.218, step 2, values float32  

> close #1-3

> volume step 1

> surface dust #4 size 10.8

> open "C:\Users\Fayang\Documents\WeChat
> Files\wxid_4198831979712\FileStorage\File\2022-03\W13_J565_MCC1+2-coot-15.pdb"
> format pdb

Chain information for W13_J565_MCC1+2-coot-15.pdb #1  
---  
Chain | Description  
A C E G I K | No description available  
B D F H J L | No description available  
  

> close

> open C:/Users/Fayang/Downloads/Structure2D_CID_23662274.sdf
> C:/Users/Fayang/Downloads/Structure2D_CID_444493.sdf
> C:/Users/Fayang/Downloads/Structure2D_CID_45266613.sdf

PubChem entry 23662274  
  
PubChem entry 444493  
  
PubChem entry 45266613  
  

> select #2/?:1@H19

1 atom, 1 residue, 1 model selected  

> select @H

Nothing selected  

> select ::@H

Expected an objects specifier or a keyword  

> select :@H

Expected an objects specifier or a keyword  

> select H

77 atoms, 3 residues, 3 models selected  

> hide sel atoms

> close

> open D:/RawData/BDC/model_building/MCC_W16_J1013_updated_invert_hand.mrc

Opened MCC_W16_J1013_updated_invert_hand.mrc as #1, grid size 512,512,512,
pixel 1.09, shown at level 0.372, step 2, values float32  

> volume step 1

> surface dust #1 size 10.9

> open D:/RawData/BDC/model_building/Acetyl-CoA-coot-1.pdb

> open D:/RawData/BDC/model_building/Propanoyl-CoA-coot-1.pdb

> transparency 50

> surface zone #2,3

Missing required "near_atoms" argument  

> surface zone #2

Missing required "near_atoms" argument  

> surface zone #2/A

Missing required "near_atoms" argument  

> select clear

Volume zone shortcut requires 1 displayed atomic model and 1 map, got 2 atomic
models, 1 maps.  

> hide #2 models

> volume zone #1 nearAtoms #3 range 6.52

> show #2 models

> volume style mesh

> volume #1 level 0.4357

> volume #1 level 0.6694

> volume #1 level 0.4144

> volume #1 level -0.09548

> volume #1 subdivideSurface true

> volume #4 subdivideSurface ture subdivision levels 2

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionlevels 2

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionlevels 1

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionlevels 1

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionlevels 0

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionLevels 2

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface ture subdivisionLevels 2

Invalid "subdivideSurface" argument: Expected true or false (or 1 or 0)  

> volume #4 subdivideSurface true subdivisionLevels 2

No volumes specified  

> volume #1 subdivideSurface true subdivisionLevels 2


===== Log before crash end =====

Log:
UCSF ChimeraX version: 1.3 (2021-12-08)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  




OpenGL version: 3.3.0 NVIDIA 496.49
OpenGL renderer: NVIDIA GeForce RTX 2060 with Max-Q Design/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Dell Inc.
Model: XPS 17 9700
OS: Microsoft Windows 10 专业版 (Build 19044)
Memory: 68,451,766,272
MaxProcessMemory: 137,438,953,344
CPU: 16 Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz
OSLanguage: zh-CN
Locale: ('zh_CN', 'cp936')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2021.10.8
    cftime: 1.5.1.1
    charset-normalizer: 2.0.9
    ChimeraX-AddCharge: 1.2.2
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.2.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.31
    ChimeraX-AtomicLibrary: 4.2
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.0
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.6.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.2
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5
    ChimeraX-CommandLine: 1.1.5
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.3
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.5
    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.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.4
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.4
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.4
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.2.6
    ChimeraX-ModelPanel: 1.2.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.2
    ChimeraX-OpenCommand: 1.7
    ChimeraX-PDB: 2.6.5
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.4.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.6.1
    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.1
    ChimeraX-ToolshedUtils: 1.2
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.13.7
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.0.1
    ChimeraX-VIPERdb: 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.4
    comtypes: 1.1.10
    cxservices: 1.1
    cycler: 0.11.0
    Cython: 0.29.24
    decorator: 5.1.0
    docutils: 0.17.1
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.21
    imagecodecs: 2021.4.28
    imagesize: 1.3.0
    ipykernel: 5.5.5
    ipython: 7.23.1
    ipython-genutils: 0.2.0
    jedi: 0.18.0
    Jinja2: 3.0.1
    jupyter-client: 6.1.12
    jupyter-core: 4.9.1
    kiwisolver: 1.3.2
    lxml: 4.6.3
    lz4: 3.1.3
    MarkupSafe: 2.0.1
    matplotlib: 3.4.3
    matplotlib-inline: 0.1.3
    msgpack: 1.0.2
    netCDF4: 1.5.7
    networkx: 2.6.3
    numexpr: 2.8.0
    numpy: 1.21.2
    openvr: 1.16.801
    packaging: 21.3
    ParmEd: 3.2.0
    parso: 0.8.3
    pickleshare: 0.7.5
    Pillow: 8.3.2
    pip: 21.2.4
    pkginfo: 1.7.1
    prompt-toolkit: 3.0.23
    psutil: 5.8.0
    pycollada: 0.7.1
    pydicom: 2.1.2
    Pygments: 2.10.0
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.6
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.2
    pytz: 2021.3
    pywin32: 228
    pyzmq: 22.3.0
    qtconsole: 5.1.1
    QtPy: 1.11.3
    RandomWords: 0.3.0
    requests: 2.26.0
    scipy: 1.7.1
    setuptools: 57.5.0
    sfftk-rw: 0.7.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.2.0
    sphinx-autodoc-typehints: 1.12.0
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2021.4.8
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.7
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.0
    wheel-filename: 1.3.0
    WMI: 1.5.1

Change History (4)

comment:1 by Eric Pettersen, 4 years ago

Component: UnassignedVolume Data
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionCrash calculating contour surface

comment:2 by Tom Goddard, 4 years ago

User was subdividing volume surface with 2 subdivision levels and crash was in C++ that does square mesh edge hiding right after the subdivision code had subdivided the mesh

_map.principle_plane_edges(varray, tarray, hidden_edges)

The map was 512 by 512 by 512.

My guess is that the tarray which is signed integers got values > 231. Subdividing two times creates 16 times the original number of triangles and 9 times the number of vertices.

This should be pretty easy to test. The subdivision code should probably test for this out of range condition and give a sensible error with no crash.

Last edited 4 years ago by Tom Goddard (previous) (diff)

comment:3 by Tom Goddard, 4 years ago

Summary: Crash calculating contour surfaceCrash calculating mesh edges for square mesh volume display

comment:4 by Tom Goddard, 4 years ago

Resolution: can't reproduce
Status: assignedclosed

Testing on a 480 by 480 by 480 map (EMDB 12873 at level 0.01) suggests this crash was not due to exceeding 2 billion vertices. This text example had only 10 million triangles, so 5 million vertices and would need subdivision level 6 (36 = 729) to exceed 2 billion vertices. The user's map may have been much noisier, so many more vertices before subdivision. But 2 billion vertices would take 96 Gbytes of memory for just one copy of the vertex, normal, and triangle data. The user's machine had 64 Gbytes and max process size of 128 Gbytes, so it is conceivable they hit that. The subdivision code also uses a set for the edges of which there are 3 times (6 billion) more than vertices so that would have taken about another 96 Gbytes (about 16 bytes per tree node). So that does not look feasible.

More likely is the a memory allocation failed. But that seems not to plausible since I think it would raise a C++ exception that would probably not produce an "access violation".

Given the huge memory required to exceed the 2 billion vertex limit, I am not going to put in checks for exceeding that limit right now -- too many other things to work on.

Note: See TracTickets for help on using tickets.