Opened 3 weeks ago

Closed 3 weeks ago

#19830 closed defect (fixed)

Drag-select freezes graphics

Reported by: sean.d.workman@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc: Greg Couch, Zach Pearson
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-6.12.0-124.31.1.el10_1.x86_64-x86_64-with-glibc2.39
ChimeraX Version: 1.11.1 (2026-01-23 05:51:34 UTC)
Description
When I try to CTRL + drag cursor to select atoms, the GUI freezes. If I wait, the menu will unfreeze, but the rendered model stays stuck with a tiny green rectangle showing where I tried to start the selection

Log:
Startup Messages  
---  
warning | GBM is not supported with the current configuration. Fallback to Vulkan rendering in Chromium.  
  
UCSF ChimeraX version: 1.11.1 (2026-01-23)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  
Desktop color scheme is dark  

> open
> /home/sean/nac/ifnl1/ifnl1_complex_out/IFNl1_complex_unrelaxed_rank_001_alphafold2_multimer_v3_model_3_seed_000.pdb
> format pdb

Chain information for
IFNl1_complex_unrelaxed_rank_001_alphafold2_multimer_v3_model_3_seed_000.pdb
#1  
---  
Chain | Description  
A | No description available  
B | No description available  
C | No description available  
  
Computing secondary structure  

> select /B:238

9 atoms, 8 bonds, 1 residue, 1 model selected  

> select clear

Drag select of 16 residues  




OpenGL version: 3.3.0 NVIDIA 590.48.01
OpenGL renderer: NVIDIA GeForce RTX 4090/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.13
Locale: en_CA.UTF-8
Qt version: PyQt6 6.9.1, Qt 6.9.0
Qt runtime version: 6.9.2
Qt platform: xcb

XDG_SESSION_TYPE=wayland
DESKTOP_SESSION=gnome
XDG_SESSION_DESKTOP=gnome
XDG_CURRENT_DESKTOP=GNOME
GNOME_SETUP_DISPLAY=:1
DISPLAY=:0
WAYLAND_DISPLAY=wayland-0
Manufacturer: ASUS
Model: System Product Name
OS: AlmaLinux 10.1
Architecture: 64bit ELF
Virtual Machine: none
CPU: 32 Intel(R) Core(TM) i9-14900KF
Cache Size: 36864 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:           125Gi       9.7Gi       110Gi       314Mi       6.8Gi       115Gi
	Swap:           31Gi          0B        31Gi

Graphics:
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1)	
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:40bf]	
	Kernel driver in use: nvidia

Installed Packages:
    aiohappyeyeballs: 2.6.1
    aiohttp: 3.13.1
    aiosignal: 1.4.0
    alabaster: 1.0.0
    annotated-types: 0.7.0
    anyio: 4.12.1
    appdirs: 1.4.4
    asttokens: 3.0.1
    attrs: 25.4.0
    babel: 2.17.0
    beautifulsoup4: 4.13.5
    blockdiag: 3.0.0
    blosc2: 3.12.2
    build: 1.3.0
    certifi: 2026.1.4
    cftime: 1.6.5
    charset-normalizer: 3.4.4
    ChimeraX-AddCharge: 1.5.20
    ChimeraX-AddH: 2.2.8
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 3.1.1
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Animations: 1.0
    ChimeraX-Aniso: 1.3.2
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.61.4
    ChimeraX-AtomicLibrary: 14.2.1
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.3
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.0
    ChimeraX-Boltz: 1.1
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.2
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.6.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.5
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3.0
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.11.1
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.5
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.4
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.4
    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.4.1
    ChimeraX-Hbonds: 2.5.3
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.4
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.7.3
    ChimeraX-Label: 1.2
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.2
    ChimeraX-Map: 1.3
    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.2.2
    ChimeraX-MCopy: 1.0
    ChimeraX-MCPServer: 0.1.0
    ChimeraX-MDcrds: 2.17.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-Minimize: 1.3.2
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.16
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.22
    ChimeraX-ModelPanel: 1.6
    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.1
    ChimeraX-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.15.2
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.12
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.5
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.4
    ChimeraX-ProfileGrids: 1.4.2
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.5
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.3
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.2
    ChimeraX-Scenes: 0.3.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.3
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.10
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.17.3
    ChimeraX-Shape: 1.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.1
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-SimilarStructures: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.19.1
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5.2
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.49.1
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.2
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDock: 1.5.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.5
    ChimeraX-Zone: 1.0.1
    click: 8.3.1
    colorama: 0.4.6
    comm: 0.2.3
    contourpy: 1.3.3
    coverage: 7.13.1
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.1.4
    debugpy: 1.8.19
    decorator: 5.2.1
    distro: 1.9.0
    docutils: 0.21.2
    executing: 2.2.1
    filelock: 3.19.1
    fonttools: 4.61.1
    frozenlist: 1.8.0
    funcparserlib: 2.0.0a0
    glfw: 2.10.0
    grako: 3.16.5
    h11: 0.16.0
    h5py: 3.15.1
    html2text: 2025.4.15
    httpcore: 1.0.9
    httpx: 0.28.1
    httpx-sse: 0.4.3
    idna: 3.11
    ihm: 2.2
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    iniconfig: 2.3.0
    ipykernel: 6.30.1
    ipython: 9.5.0
    ipython_pygments_lexers: 1.1.1
    ipywidgets: 8.1.8
    jedi: 0.19.2
    Jinja2: 3.1.6
    jsonschema: 4.26.0
    jsonschema-specifications: 2025.9.1
    jupyter_client: 8.6.3
    jupyter_core: 5.9.1
    jupyterlab_widgets: 3.0.16
    kiwisolver: 1.4.9
    line_profiler: 5.0.0
    lxml: 6.0.2
    lz4: 4.3.2
    Markdown: 3.8.2
    MarkupSafe: 3.0.3
    matplotlib: 3.10.7
    matplotlib-inline: 0.2.1
    mcp: 1.18.0
    msgpack: 1.1.1
    multidict: 6.7.0
    ndindex: 1.10.1
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.14.1
    numpy: 1.26.4
    nvidia-nvjitlink-cu12: 12.9.86
    OpenMM: 8.2.0
    OpenMM-CUDA-12: 8.2.0
    openvr: 1.26.701
    packaging: 25.0
    ParmEd: 4.2.2
    parso: 0.8.5
    pep517: 0.13.1
    pexpect: 4.9.0
    pickleshare: 0.7.5
    pillow: 11.3.0
    pip: 25.2
    pkginfo: 1.12.1.2
    platformdirs: 4.5.1
    pluggy: 1.6.0
    prompt_toolkit: 3.0.52
    propcache: 0.4.1
    psutil: 7.0.0
    ptyprocess: 0.7.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pybind11: 3.0.1
    pycollada: 0.8
    pydantic: 2.12.5
    pydantic-settings: 2.12.0
    pydantic_core: 2.41.5
    pydicom: 2.4.4
    Pygments: 2.18.0
    pynmrstar: 3.3.6
    pynrrd: 1.0.0
    PyOpenGL: 3.1.10
    PyOpenGL-accelerate: 3.1.10
    pyopenxr: 1.1.4501
    pyparsing: 3.3.2
    pyproject_hooks: 1.2.0
    PyQt6: 6.9.1
    PyQt6-Qt6: 6.9.2
    PyQt6-WebEngine: 6.9.0
    PyQt6-WebEngine-Qt6: 6.9.2
    PyQt6_sip: 13.10.2
    pytest: 9.0.2
    pytest-cov: 7.0.0
    python-dateutil: 2.9.0.post0
    python-dotenv: 1.2.1
    python-multipart: 0.0.21
    pyzmq: 27.1.0
    qtconsole: 5.7.0
    QtPy: 2.4.3
    qtshim: 1.2
    RandomWords: 0.4.0
    referencing: 0.37.0
    requests: 2.32.5
    roman-numerals: 4.1.0
    roman-numerals-py: 4.1.0
    rpds-py: 0.30.0
    scipy: 1.14.0
    setuptools: 80.9.0
    sfftk-rw: 0.8.1
    six: 1.17.0
    snowballstemmer: 3.0.1
    sortedcontainers: 2.4.0
    soupsieve: 2.8.3
    Sphinx: 8.2.3
    sphinx-autodoc-typehints: 3.2.0
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    sse-starlette: 3.2.0
    stack-data: 0.6.3
    starlette: 0.52.1
    superqt: 0.7.6
    tables: 3.10.2
    tcia_utils: 1.5.1
    tifffile: 2025.3.13
    tinyarray: 1.2.5
    tornado: 6.5.4
    traitlets: 5.14.3
    typing-inspection: 0.4.2
    typing_extensions: 4.15.0
    urllib3: 2.6.3
    uvicorn: 0.40.0
    wcwidth: 0.3.2
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.15
    yarl: 1.22.0

Change History (7)

comment:1 by Eric Pettersen, 3 weeks ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionDrag-select freezes graphics

comment:2 by Tom Goddard, 3 weeks ago

As you noted in the ChimeraX Github issue about this bug

https://github.com/RBVI/ChimeraX/issues/221

it hangs even with no models open the problem is with the graphics drawing the green outline rectangle when your drag select. That code draws to the front buffer in OpenGL, a somewhat unusual operation, to invert the green channel of the pixels of the outline. My guess is with XWayland that drawing to the front buffer with Nvidia graphics is broken. I retested on my Ubuntu 25.10 system with Nvidia 580.48.01 driver and I can reproduce the hang.

I tried modifying the ChimeraX code so instead of drawing the OpenGL front buffer it draws the back buffer and it works correctly, although to make the green box visible I have to swap back and front buffers, then draw the box in the back buffer, then swap back and front buffers. This leads to unpleasant flicker.

Another work-around is just to not draw the box with the broken XWayland compositor. But when I tried that the lack of visual feedback when selecting makes it hard to select what you want.

Another thing I tried was drawing to the front buffer but not doing the color xor. That froze in the same way. So it appears to be the front buffer drawing rather than the xor that is broken. I also tried removing the glFlush() call and that avoided the hang but does not render the green outline box.

Last edited 3 weeks ago by Tom Goddard (previous) (diff)

comment:3 by Tom Goddard, 3 weeks ago

Cc: Greg Couch Zach Pearson added

I think I need to put in some work-around since Wayland is becoming common now. Online posts about other Wayland Nvidia problems suggest there are many bugs for 3D rendering.

The best fix I found was swapping front to back, drawing the box, then swapping back to front, causing flicker. I can put a test for Wayland in and use that method of drawing the green selection rectangle.

Hopefully the Wayland and Nvidia developers will fix this front buffer drawing bug in a future release.

comment:4 by Zach Pearson, 3 weeks ago

That makes sense to me.

Wayland really does cause more problems than it solves for desktop Linux IMO. I was hopeful that with Qt implementing xdg-toplevel-drag we'd be able to support it on the upcoming Ubuntu 26.04, but I tried an early build and discovered xdg-toplevel-drag still doesn't solve the docked window problem. It's essentially there so browser windows can trade tabs with each other. So we'll be stuck forcing Xwayland for the foreseeable future.

comment:5 by Tom Goddard, 3 weeks ago

This drag select hang is with XWayland.

comment:6 by Tom Goddard, 3 weeks ago

On Ubuntu 24.04 with a Wayland session and Nvidia driver 580.126.09 and Nvidia 4090 drag select does not hang, but it also does not show and green outline rectangle. So it is broken in a less serious way.

comment:7 by Tom Goddard, 3 weeks ago

Resolution: fixed
Status: assignedclosed

Fixed.

I added work-around code to so drag select draws the outline in the back buffer and swaps it to the front buffer if it detects Wayland and Nvidia graphics. Flicker is severe, but at least it doesn't hang. Hopefully Wayland/Nvidia will fix this bug and we can remove this ChimeraX work-around code.

Note: See TracTickets for help on using tickets.