Opened 4 days ago

Closed 4 days ago

Last modified 4 days ago

#19881 closed defect (fixed)

Error at startup glGenVertexArrays() in PySide6 Feb 20 daily build

Reported by: goddard@… Owned by: Zach Pearson
Priority: normal Milestone:
Component: Window Toolkit Version:
Keywords: Cc: Eric Pettersen
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-26.3-arm64-arm-64bit
ChimeraX Version: 1.12.dev202602210126 (2026-02-21 01:26:54 UTC)
Description
Installed daily build just now (Feb 23, 2026), started and it failed with an error, same as bug reports #19874 and 19873.

When the error dialog appeared I pressed Report Bug button and the bug report panel showed but I could not type in the description until I hit Ok on the original Error dialog which had not disappeared.

Log:
Startup Errors  
---  
error | There was an OpenGL graphics error while starting up. This is usually a problem with the system graphics driver, and the only way to remedy it is to update the graphics driver. ChimeraX will probably not function correctly with the current graphics driver.  
  
"OpenGL error invalid enumerant"  
  
UCSF ChimeraX version: 1.12.dev202602210126 (2026-02-21)  
© 2016-2026 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  
Traceback (most recent call last):  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 103, in _expose_event  
self._create_opengl_context()  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 136, in _create_opengl_context  
r.initialize_opengl(lw, lh)  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/graphics/opengl.py", line 1174, in initialize_opengl  
vao = GL.glGenVertexArrays(1)  
^^^^^^^^^^^^^^^^^^^^^^^  
File "src/latebind.pyx", line 40, in
OpenGL_accelerate.latebind.LateBind.__call__  
File "src/wrapper.pyx", line 319, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "src/wrapper.pyx", line 312, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/baseplatform.py", line 487, in __call__  
return self(*args, **named)  
^^^^^^^^^^^^^^^^^^^^  
File "src/errorchecker.pyx", line 59, in
OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError  
OpenGL.error.GLError: GLError(  
err = 1280,  
description = b'invalid enumerant',  
baseOperation = glGenVertexArrays,  
pyArgs = (1, <object object at 0x143cb53e0>),  
cArgs = (1, array([1], dtype=uint32)),  
cArguments = (1, array([1], dtype=uint32))  
)  
  
OpenGL.error.GLError: GLError(  
err = 1280,  
description = b'invalid enumerant',  
baseOperation = glGenVertexArrays,  
pyArgs = (1, ),  
cArgs = (1, array([1], dtype=uint32)),  
cArguments = (1, array([1], dtype=uint32))  
)  
  
File "src/errorchecker.pyx", line 59, in
OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 104, in _expose_event  
self.status(self._last_message, self._last_color)  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 171, in status  
self._draw_text(msg, color, secondary)  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 177, in _draw_text  
self._update_texture(msg, color, secondary)  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/statusbar.py", line 192, in _update_texture  
lw, lh = self._renderer.render_size()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/graphics/opengl.py", line 636, in render_size  
x, y, w, h = fb.viewport  
^^^^^^^^^^  
TypeError: cannot unpack non-iterable NoneType object  
  
TypeError: cannot unpack non-iterable NoneType object  
  
File "/Users/goddard/Desktop/ChimeraX Feb 23
2026.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/graphics/opengl.py", line 636, in render_size  
x, y, w, h = fb.viewport  
^^^^^^^^^^  
  
See log for complete Python traceback.  
  




OpenGL version: 4.1 Metal - 90.5
OpenGL renderer: Apple M2 Ultra
OpenGL vendor: Apple

Python: 3.11.9
Locale: en_US.UTF-8
Qt version: PySide6 6.10.2, Qt 6.10.2
Qt runtime version: 6.10.2
Qt platform: cocoa
Hardware:

    Hardware Overview:

      Model Name: Mac Studio
      Model Identifier: Mac14,14
      Model Number: Z1800003VLL/A
      Chip: Apple M2 Ultra
      Total Number of Cores: 24 (16 Performance and 8 Efficiency)
      Memory: 64 GB
      System Firmware Version: 13822.81.10
      OS Loader Version: 13822.81.10

Software:

    System Software Overview:

      System Version: macOS 26.3 (25D125)
      Kernel Version: Darwin 25.3.0
      Time since boot: 6 days, 2 hours, 32 minutes

Graphics/Displays:

    Apple M2 Ultra:

      Chipset Model: Apple M2 Ultra
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 60
      Vendor: Apple (0x106b)
      Metal Support: Metal 4
      Displays:
        PHL 278B1:
          Resolution: 3840 x 2160 (2160p/4K UHD 1 - Ultra High Definition)
          UI Looks like: 1920 x 1080 @ 60.00Hz
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Rotation: Supported


Installed Packages:
    accessible-pygments: 0.0.5
    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
    appnope: 0.1.4
    asttokens: 3.0.1
    attrs: 25.4.0
    babel: 2.18.0
    beautifulsoup4: 4.13.5
    blockdiag: 3.0.0
    blosc2: 4.0.0
    build: 1.3.0
    certifi: 2025.7.14
    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.2
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 3.2
    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.64
    ChimeraX-AtomicLibrary: 14.2.3
    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.1
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.5
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-CiliaBuilder: 1.0.9
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3.1
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.12.dev202602210126
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.5
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DAQplugin: 0.12.0
    ChimeraX-DataFormats: 1.2.4
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.2
    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.8.2
    ChimeraX-Label: 1.3
    ChimeraX-LightingGUI: 1.0
    ChimeraX-ListInfo: 1.3.1
    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.2.0
    ChimeraX-MDcrds: 2.17.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-Minimize: 1.3.5
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.16
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.23
    ChimeraX-ModelPanel: 1.6.1
    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-OpenFold: 1.0
    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.5.1
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.8
    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.12
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.17.5
    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-SNFG: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.19.3
    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-TutorialReadFormat: 0.1
    ChimeraX-UI: 1.50.3
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.2
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDock: 1.6
    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
    coloredlogs: 15.0.1
    comm: 0.2.3
    contourpy: 1.3.3
    coverage: 7.13.4
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.1.4
    debugpy: 1.8.20
    decorator: 5.2.1
    docutils: 0.21.2
    executing: 2.2.1
    filelock: 3.19.1
    flatbuffers: 25.12.19
    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
    humanfriendly: 10.0
    idna: 3.11
    ihm: 2.2
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    iniconfig: 2.3.0
    ipykernel: 7.1.0
    ipython: 9.9.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.8.0
    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
    mpmath: 1.3.0
    mrcfile: 1.5.4
    msgpack: 1.1.1
    multidict: 6.7.1
    narwhals: 2.16.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: 2.4.2
    numpy: 1.26.4
    onnxruntime: 1.23.2
    OpenMM: 8.4.0
    openvr: 1.26.701
    packaging: 25.0
    pandas: 2.3.3
    ParmEd: 4.2.2
    parso: 0.8.6
    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.9.2
    plotly: 6.5.2
    pluggy: 1.6.0
    prompt_toolkit: 3.0.52
    propcache: 0.4.1
    protobuf: 6.33.4
    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.13.1
    pydantic_core: 2.41.5
    pydata-sphinx-theme: 0.16.1
    pydicom: 2.4.4
    Pygments: 2.18.0
    pyKVFinder: 0.9.0
    pynmrstar: 3.5.0
    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
    PySide6: 6.10.2
    PySide6_Addons: 6.10.2
    PySide6_Essentials: 6.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.22
    pyzmq: 27.1.0
    qtconsole: 5.7.0
    QtPy: 2.4.3
    qtshim: 1.2.1
    RandomWords: 0.4.0
    referencing: 0.37.0
    requests: 2.32.5
    roman-numerals: 4.1.0
    rpds-py: 0.30.0
    scipy: 1.16.3
    scipy: 1.14.0
    setuptools: 80.9.0
    sfftk-rw: 0.8.1
    shiboken6: 6.10.2
    six: 1.17.0
    snowballstemmer: 3.0.1
    sortedcontainers: 2.4.0
    soupsieve: 2.8.3
    Sphinx: 9.0.4
    sphinx-autodoc-typehints: 3.6.1
    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
    sympy: 1.14.0
    tables: 3.10.2
    tcia_utils: 1.5.1
    tifffile: 2025.3.13
    tinyarray: 1.2.5
    tomlkit: 0.14.0
    tornado: 6.5.4
    traitlets: 5.14.3
    typing-inspection: 0.4.2
    typing_extensions: 4.15.0
    urllib3: 2.6.3
    uvicorn: 0.41.0
    wcwidth: 0.6.0
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.15
    yarl: 1.22.0

Change History (6)

comment:1 by Tom Goddard, 4 days ago

Cc: Eric Pettersen added
Component: UnassignedWindow Toolkit
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionError at startup glGenVertexArrays() in PySide6 Feb 20 daily build

I started ChimeraX a second time and it gave the same error. Seems the current daily build is broken. Eric also tried on his machine, same error. There are two previous reports in Feb 20 (#19783), and Feb 21 (#19784) builds, so probably a recent checkin broke things.

comment:2 by Tom Goddard, 4 days ago

The error is caused by PySide6 6.10.2. ChimeraX was updated from PySide6 6.10.1 to 6.10.2 on Feb 18. I tried 6.10.2 in my development build, got the error, reverted to 6.10.1 and no error.

Will revert to 6.10.1 and try to update the daily builds.

comment:3 by Tom Goddard, 4 days ago

Have reverted code to PySide6 6.10.1 and restarted nightly builds.

comment:4 by Tom Goddard, 4 days ago

Resolution: fixed
Status: assignedclosed

New daily builds with PySide6 6.10.1 are up and start correctly on Mac.

comment:5 by Tom Goddard, 4 days ago

This OpenGL error at startup happens in the status bar opengl context initialization in an expose event and is reminiscent of many past reported status bar expose event OpenGL errors that occurred after extended use. Those past errors were not reproducible but this one is, so this one may help find a work-around for those other expose event errors.

This report gives an "invalid enumerant" error in glGenVertexArrays(1). That error was clearly not generated by this call because the call has no enumerant argument and documentation shows it cannot produce that error. So the reported error was from a previous OpenGL call. OpenGL errors are not raised when they happen, specific code (glGetError()) has to be called to check for them. Interestingly this glGenVertexArrays() calls is the first OpenGL call since the OpenGL context was made current. So it does not appear that that any previous OpenGL call could have generated this error. This is the same pattern observed in previous reports that are not at startup. The error is often in glClear() the first call after the context was made current. It seems like there are 2 possibilities. Either the error was generated the previous time the context was used and was never checked, or the error was produced by Qt after the context was made current. We have PyOpenGL checking for errors after every call, so it seems that the error was not produced by our code which uses only PyOpenGL. Another clue that suggests Qt is executing some OpenGL with our context after it is made current appears in other bug reports that show we call QOpenGLContext.makeCurrent() and then it generates an expose event and processes it before returning from the makeCurrent() call. This is a catastrophic Qt bug, dispatching events in QOpenGLContext.makeCurrent(). That may be what is going on in this bug report. Some random code gets run after our makeCurrent() call producing the OpenGL error due to some Qt use of OpenGL (probably with the wrong context, thinking it is using the Qt gui rendering context, but instead using our context). Then our code catches the error after the first OpenGL call and raises an error.

To test this idea I put in glGetError() immediately after our QOpenGLContext.makeCurrent() and indeed I get the invalid enumerant even though we haven't executed any opengl calls. If I then ignore those errors (just log a message) then ChimeraX works correctly. Maybe this is a reasonable work-around, discard OpenGL errors after makeCurrent(). I don't want to hide those errors, but I also don't want to log them where the user will see them every time at start-up on Mac with PySide6 6.10.2.

Another often reported bug since macOS 26 was released is a crash in QOpenGLContext.swapBuffers(). I suspect this may have the same underlying cause, that Qt is dispatching events in the middle of that call leading to inconsistent state which causes a crash. The work-around of discarding OpenGL errors after makeCurrent() won't fix those crashes.

comment:6 by Tom Goddard, 4 days ago

I put in code to check for OpenGL errors immediately after making the context current (graphics window or status line) and reporting those errors to the Log. This clears the OpenGL error flags so subsequent OpenGL calls don't raise errors avoiding tracebacks and broken rendering. In PySide6 6.10.1 this does not produce any log messages at startup but in 6.10.2 it logs two messages (status line and graphics). So I am leaving PySide at version 6.10.1.

Hopefully this change will suppress the frequent status line expose event tracebacks when waking Mac from sleep. It is not expected to help with the swap_buffers crashes on macOS 26.

Note: See TracTickets for help on using tickets.