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