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 (231) 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.
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