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: | 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 , 4 years ago
Component: | Unassigned → Volume Data |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Crash calculating contour surface |
comment:3 by , 4 years ago
Summary: | Crash calculating contour surface → Crash calculating mesh edges for square mesh volume display |
---|
comment:4 by , 4 years ago
Resolution: | → can't reproduce |
---|---|
Status: | assigned → closed |
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.
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
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.