#15350 closed defect (fixed)

Crash in surface dust blob_list

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:        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 pett, 17 months ago

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

comment:2 by pett, 17 months ago

Summary: Crash in surface dict blob_listCrash in surface dust blob_list

!>#*@! auto correct

comment:3 by Tom Goddard, 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.

Last edited 17 months ago by Tom Goddard (previous) (diff)

comment:4 by Tom Goddard, 17 months ago

Resolution: fixed
Status: assignedclosed

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.

Note: See TracTickets for help on using tickets.