Opened 17 months ago
Closed 17 months ago
#15350 closed defect (fixed)
Crash in surface dust blob_list
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: Linux-4.18.0-513.24.1.el8_9.x86_64-x86_64-with-glibc2.28 ChimeraX Version: 1.7.1 (2024-01-23 01:58:08 UTC) Description Last time you used ChimeraX it crashed. Please describe steps that led to the crash here. Fatal Python error: Segmentation fault Current thread 0x00007ff05090c740 (most recent call first): File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 266 in blob_list File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 256 in blob_values File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 206 in blob_sizes File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 185 in triangle_values File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 166 in triangle_mask File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 40 in hide_surface_dust File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 24 in hide_dust File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 101 in set_surface_mask File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/surface/dust.py", line 89 in __call__ File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line 714 in set_geometry File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/map/volume.py", line 2271 in _set_surface File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/map/volume.py", line 2138 in update_surface File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/map/volume.py", line 830 in _update_surfaces File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/map/volume.py", line 807 in update_drawings File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/map/volume.py", line 4061 in _update_drawings File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/triggerset.py", line 149 in invoke File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/triggerset.py", line 248 in _activate File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/triggerset.py", line 217 in activate File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/triggerset.py", line 393 in activate_trigger File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py", line 294 in check_for_drawing_change File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/updateloop.py", line 76 in draw_new_frame File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/updateloop.py", line 150 in _redraw_timer_callback File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/ui/gui.py", line 275 in event_loop File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/__main__.py", line 918 in init File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-packages/chimerax/core/__main__.py", line 1069 in File "", line 88 in _run_code File "", line 198 in _run_module_as_main Extension modules: chimerax.arrays._arrays, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, chimerax.geometry._geometry, PyQt6.QtCore, PyQt6.QtGui, PyQt6.QtWidgets, PyQt6.QtWebChannel, PyQt6.QtNetwork, PyQt6.QtWebEngineCore, PyQt6.QtPrintSupport, PyQt6.QtWebEngineWidgets, chimerax.atomic_lib._load_libs, tinyarray, chimerax.atomic.cymol, chimerax.atomic.cytmpl, chimerax.map._map, charset_normalizer.md, PIL._imaging, matplotlib._c_internal_utils, matplotlib._path, kiwisolver._cext, matplotlib._image, PyQt6.QtOpenGL, PyQt6.QtOpenGLWidgets, OpenGL_accelerate.errorchecker, OpenGL_accelerate.wrapper, OpenGL_accelerate.formathandler, OpenGL_accelerate.arraydatatype, OpenGL_accelerate.latebind, OpenGL_accelerate.vbo, chimerax.surface._surface, chimerax.pdb_lib._load_libs, PIL._imagingmath, OpenGL_accelerate.numpy_formathandler, OpenGL_accelerate.nones_formathandler, chimerax.graphics._graphics (total: 48) ===== Log before crash start ===== Startup Messages --- warning | Replacing fetcher for 'pdb_nmr' and format NMRSTAR from NMRSTAR bundle with that from NMRSTAR bundle UCSF ChimeraX version: 1.7.1 (2024-01-23) © 2016-2023 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > open /old- > home/mnavarro/EM/SSPI-1/completos/postprocess_302autoB-71_unmasked_3.52.mrc Opened postprocess_302autoB-71_unmasked_3.52.mrc as #1, grid size 960,960,960, pixel 1.32, shown at step 1, values float32 > volume #1 region 0,0,0,959,959,959 step 4 > volume #1 step 1 > vop gaussian #1 Opened postprocess_302autoB-71_unmasked_3.52.mrc gaussian as #2, grid size 960,960,960, pixel 1.32, shown at step 1, values float32 > color radial #2 palette 0,#ff00fd:323,#dbcf5c:465,#3465a4:535,#ff0000 center > 632.68,632.68,632.68 > view orient > ui tool show "Side View" > volume #1 change image level -0.01256,0 level 0.03363,0.8 level 0.09774,1 > volume #1 level 0.01793 > surface dust #1 size 13.2 > surface dust #2 size 13.2 > volume #1 level 0.0085 ===== Log before crash end ===== Log: Startup Messages --- warning | Replacing fetcher for 'pdb_nmr' and format NMRSTAR from NMRSTAR bundle with that from NMRSTAR bundle UCSF ChimeraX version: 1.7.1 (2024-01-23) © 2016-2023 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX OpenGL version: 3.3.0 NVIDIA 550.78 OpenGL renderer: Quadro P620/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation Python: 3.11.2 Locale: en_US.UTF-8 Qt version: PyQt6 6.3.1, Qt 6.3.1 Qt runtime version: 6.3.2 Qt platform: xcb XDG_SESSION_TYPE=x11 DESKTOP_SESSION=gnome XDG_SESSION_DESKTOP=gnome XDG_CURRENT_DESKTOP=GNOME DISPLAY=:1 Manufacturer: ASUSTeK COMPUTER INC. Model: Pro E800 G4_WS950T OS: Rocky Linux 8.9 Green Obsidian Architecture: 64bit ELF Virtual Machine: none CPU: 40 Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz Cache Size: 28160 KB Memory: total used free shared buff/cache available Mem: 723Gi 40Gi 281Gi 4.0Gi 401Gi 674Gi Swap: 4.0Gi 2.9Gi 1.1Gi Graphics: 05:00.0 VGA compatible controller [0300]: ASPEED Technology, Inc. ASPEED Graphics Family [1a03:2000] (rev 41) Subsystem: ASUSTeK Computer Inc. Device [1043:86ed] Kernel driver in use: ast Installed Packages: alabaster: 0.7.16 appdirs: 1.4.4 asttokens: 2.4.1 Babel: 2.14.0 backcall: 0.2.0 beautifulsoup4: 4.11.2 blockdiag: 3.0.0 blosc2: 2.0.0 build: 0.10.0 certifi: 2023.11.17 cftime: 1.6.3 charset-normalizer: 3.3.2 ChimeraX-AddCharge: 1.5.13 ChimeraX-AddH: 2.2.5 ChimeraX-AlignmentAlgorithms: 2.0.1 ChimeraX-AlignmentHdrs: 3.4.1 ChimeraX-AlignmentMatrices: 2.1 ChimeraX-Alignments: 2.12.2 ChimeraX-AlphaFold: 1.0 ChimeraX-AltlocExplorer: 1.1.1 ChimeraX-AmberInfo: 1.0 ChimeraX-Arrays: 1.1 ChimeraX-Atomic: 1.49.1 ChimeraX-AtomicLibrary: 12.1.5 ChimeraX-AtomSearch: 2.0.1 ChimeraX-AxesPlanes: 2.3.2 ChimeraX-BasicActions: 1.1.2 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 2.1.2 ChimeraX-BondRot: 2.0.4 ChimeraX-BugReporter: 1.0.1 ChimeraX-BuildStructure: 2.10.5 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.2.2 ChimeraX-ButtonPanel: 1.0.1 ChimeraX-CageBuilder: 1.0.1 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.3.2 ChimeraX-ChangeChains: 1.1 ChimeraX-CheckWaters: 1.3.2 ChimeraX-ChemGroup: 2.0.1 ChimeraX-Clashes: 2.2.4 ChimeraX-ColorActions: 1.0.3 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.5 ChimeraX-CommandLine: 1.2.5 ChimeraX-ConnectStructure: 2.0.1 ChimeraX-Contacts: 1.0.1 ChimeraX-Core: 1.7.1 ChimeraX-CoreFormats: 1.2 ChimeraX-coulombic: 1.4.2 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0.1 ChimeraX-DataFormats: 1.2.3 ChimeraX-Dicom: 1.2 ChimeraX-DistMonitor: 1.4 ChimeraX-DockPrep: 1.1.3 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ESMFold: 1.0 ChimeraX-FileHistory: 1.0.1 ChimeraX-FunctionKey: 1.0.1 ChimeraX-Geometry: 1.3 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.1.1 ChimeraX-Hbonds: 2.4 ChimeraX-Help: 1.2.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.1 ChimeraX-IUPAC: 1.0 ChimeraX-Label: 1.1.8 ChimeraX-LinuxSupport: 1.0.1 ChimeraX-ListInfo: 1.2.2 ChimeraX-Log: 1.1.6 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.9.1 ChimeraX-Map: 1.1.4 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0.1 ChimeraX-MapFilter: 2.0.1 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1.1 ChimeraX-Markers: 1.0.1 ChimeraX-Mask: 1.0.2 ChimeraX-MatchMaker: 2.1.2 ChimeraX-MCopy: 1.0 ChimeraX-MDcrds: 2.6.1 ChimeraX-MedicalToolbar: 1.0.2 ChimeraX-Meeting: 1.0.1 ChimeraX-MLP: 1.1.1 ChimeraX-mmCIF: 2.12.1 ChimeraX-MMTF: 2.2 ChimeraX-Modeller: 1.5.14 ChimeraX-ModelPanel: 1.4 ChimeraX-ModelSeries: 1.0.1 ChimeraX-Mol2: 2.0.3 ChimeraX-Mole: 1.0 ChimeraX-Morph: 1.0.2 ChimeraX-MouseModes: 1.2 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nifti: 1.1 ChimeraX-NRRD: 1.1 ChimeraX-Nucleotides: 2.0.3 ChimeraX-OpenCommand: 1.13.1 ChimeraX-PDB: 2.7.3 ChimeraX-PDBBio: 1.0.1 ChimeraX-PDBLibrary: 1.0.4 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0.1 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1 ChimeraX-PubChem: 2.1 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1.2 ChimeraX-RemoteControl: 1.0 ChimeraX-RenderByAttr: 1.1 ChimeraX-RenumberResidues: 1.1 ChimeraX-ResidueFit: 1.0.1 ChimeraX-RestServer: 1.2 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 4.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.5.1 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0.2 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0.1 ChimeraX-SelInspector: 1.0 ChimeraX-SeqView: 2.11 ChimeraX-Shape: 1.0.1 ChimeraX-Shell: 1.0.1 ChimeraX-Shortcuts: 1.1.1 ChimeraX-ShowSequences: 1.0.2 ChimeraX-SideView: 1.0.1 ChimeraX-Smiles: 2.1.2 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.12.4 ChimeraX-STL: 1.0.1 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.1.2 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0.1 ChimeraX-SwapAA: 2.0.1 ChimeraX-SwapRes: 2.2.2 ChimeraX-TapeMeasure: 1.0 ChimeraX-TaskManager: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.1.2 ChimeraX-ToolshedUtils: 1.2.4 ChimeraX-Topography: 1.0 ChimeraX-ToQuest: 1.0 ChimeraX-Tug: 1.0.1 ChimeraX-UI: 1.33.3 ChimeraX-uniprot: 2.3 ChimeraX-UnitCell: 1.0.1 ChimeraX-ViewDockX: 1.3.2 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0.1 ChimeraX-vrml: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0.2 ChimeraX-WebServices: 1.1.3 ChimeraX-Zone: 1.0.1 colorama: 0.4.6 comm: 0.2.1 contourpy: 1.2.0 cxservices: 1.2.2 cycler: 0.12.1 Cython: 0.29.33 debugpy: 1.8.0 decorator: 5.1.1 distro: 1.7.0 docutils: 0.19 executing: 2.0.1 filelock: 3.9.0 fonttools: 4.47.2 funcparserlib: 2.0.0a0 glfw: 2.6.4 grako: 3.16.5 h5py: 3.10.0 html2text: 2020.1.16 idna: 3.6 ihm: 0.38 imagecodecs: 2023.9.18 imagesize: 1.4.1 ipykernel: 6.23.2 ipython: 8.14.0 ipython-genutils: 0.2.0 ipywidgets: 8.1.1 jedi: 0.18.2 Jinja2: 3.1.2 jupyter-client: 8.2.0 jupyter-core: 5.7.1 jupyterlab-widgets: 3.0.9 kiwisolver: 1.4.5 line-profiler: 4.0.2 lxml: 4.9.2 lz4: 4.3.2 MarkupSafe: 2.1.4 matplotlib: 3.7.2 matplotlib-inline: 0.1.6 msgpack: 1.0.4 nest-asyncio: 1.6.0 netCDF4: 1.6.2 networkx: 3.1 nibabel: 5.0.1 nptyping: 2.5.0 numexpr: 2.8.8 numpy: 1.25.1 openvr: 1.23.701 packaging: 23.2 ParmEd: 3.4.3 parso: 0.8.3 pep517: 0.13.0 pexpect: 4.9.0 pickleshare: 0.7.5 pillow: 10.2.0 pip: 23.0 pkginfo: 1.9.6 platformdirs: 4.1.0 prompt-toolkit: 3.0.43 psutil: 5.9.5 ptyprocess: 0.7.0 pure-eval: 0.2.2 py-cpuinfo: 9.0.0 pycollada: 0.7.2 pydicom: 2.3.0 Pygments: 2.16.1 pynrrd: 1.0.0 PyOpenGL: 3.1.7 PyOpenGL-accelerate: 3.1.7 pyopenxr: 1.0.2801 pyparsing: 3.0.9 pyproject-hooks: 1.0.0 PyQt6-commercial: 6.3.1 PyQt6-Qt6: 6.3.2 PyQt6-sip: 13.4.0 PyQt6-WebEngine-commercial: 6.3.1 PyQt6-WebEngine-Qt6: 6.3.2 python-dateutil: 2.8.2 pytz: 2023.3.post1 pyzmq: 25.1.2 qtconsole: 5.4.3 QtPy: 2.4.1 RandomWords: 0.4.0 requests: 2.31.0 scipy: 1.11.1 setuptools: 67.4.0 sfftk-rw: 0.7.3 six: 1.16.0 snowballstemmer: 2.2.0 sortedcontainers: 2.4.0 soupsieve: 2.5 sphinx: 6.1.3 sphinx-autodoc-typehints: 1.22 sphinxcontrib-applehelp: 1.0.8 sphinxcontrib-blockdiag: 3.0.0 sphinxcontrib-devhelp: 1.0.6 sphinxcontrib-htmlhelp: 2.0.5 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 1.0.7 sphinxcontrib-serializinghtml: 1.1.10 stack-data: 0.6.3 superqt: 0.5.0 tables: 3.8.0 tcia-utils: 1.5.1 tifffile: 2023.7.18 tinyarray: 1.2.4 tomli: 2.0.1 tornado: 6.4 traitlets: 5.9.0 typing-extensions: 4.9.0 tzdata: 2023.4 urllib3: 2.1.0 wcwidth: 0.2.13 webcolors: 1.12 wheel: 0.38.4 wheel-filename: 1.4.1 widgetsnbextension: 4.0.9
Change History (4)
comment:1 by , 17 months ago
Component: | Unassigned → Volume Data |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Crash in surface dict blob_list |
comment:2 by , 17 months ago
Summary: | Crash in surface dict blob_list → Crash in surface dust blob_list |
---|
comment:3 by , 17 months ago
Crash was in call to C++ connected_pieces(triangle_array). Surface triangles were from a very large map 960 x 960 x 960 so almost 1 Gvoxels. The triangle array has vertex indices that are int32. The indices into the triangle array are int32. So if we get over 2 billion (pow(2,31)) length triangle array, or about 670 million (= 2/3 billion) triangles it is going to crash. My guess is that was what happened. The triangle array indexing should use int64. There are typically twice as many triangles as vertices (each vertex belongs to ~6 triangles), so this crash would be at about 335 million vertices. That seems possible with a 1 Gvoxel map.
comment:4 by , 17 months ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Fixed in daily builds, not in 1.8.
Tests showed calling connected_pieces() with 1 billion triangles crashes as expected. I changed the code to use int64 indexing in the triangle array so now the code will not crash indexing that array. But connected_pieces() returns an array of int32 triangle indices, so the code is still limited to 2 billion (pow(2,31)-1) triangles. So the fix increases the max triangles by a factor of 3, but it is still limited. That routine could be changed to return an int64 array of triangle indices. Would be a bit better. But because the surface code uses int32 vertex indices in a triangle array and typically the number of vertices is about half the number of triangles (for closed surfaces) so this would only get us to about 4 billion triangles in practice. The int32 type for vertices is to save memory for large surfaces so I don't think I would change that.
!>#*@! auto correct