Opened 3 years ago

Closed 3 years ago

#6770 closed defect (fixed)

Gnome: OpenGL.error.Error: Attempt to retrieve context when no valid context

Reported by: murpholinox@… Owned by: Greg Couch
Priority: normal Milestone:
Component: Platform Version:
Keywords: Cc: chimera-programmers
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-5.17.4-200.fc35.x86_64-x86_64-with-glibc2.34
ChimeraX Version: 1.4.dev202205030131 (2022-05-03 01:31:04 UTC)
Description
I just installed chimerax-daily this error pops up. 
(attaching the log file from the log window)

Log:
You can double click a model's Name or ID in the model panel to edit those
fields  
UCSF ChimeraX version: 1.4.dev202205030131 (2022-05-03)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  
Updating list of available bundles failed: [Errno -2] Name or service not
known  
Traceback (most recent call last):  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 84, in _expose_event  
self.status(self._last_message, self._last_color)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 151, in status  
self._draw_text(msg, color, secondary)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 161, in _draw_text  
draw_overlays(dlist, self._renderer)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1579, in draw_overlays  
_draw_multiple(drawings, r, Drawing.TRANSPARENT_DRAW_PASS)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1539, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 752, in draw  
self.draw_self(renderer, draw_pass)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 763, in draw_self  
self._draw_geometry(renderer, transparent_only = any_opaque)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 786, in _draw_geometry  
ds.activate_bindings(renderer)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1898, in activate_bindings  
self.update_buffers()  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1888, in update_buffers  
bi.bind_shader_variable(b)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 2514, in bind_shader_variable  
GL.glVertexAttribPointer(attr_id, ncomp, gtype, normalize, 0, None)  
File "src/latebind.pyx", line 51, in OpenGL_accelerate.latebind.Curry.__call__  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/GL/VERSION/GL_2_0.py", line 469, in glVertexAttribPointer  
contextdata.setValue( key, array )  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 58, in setValue  
context = getContext( context )  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 40, in getContext  
raise error.Error(  
OpenGL.error.Error: Attempt to retrieve context when no valid context  
  
OpenGL.error.Error: Attempt to retrieve context when no valid context  
  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 40, in getContext  
raise error.Error(  
  
See log for complete Python traceback.  
  
Traceback (most recent call last):  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 84, in _expose_event  
self.status(self._last_message, self._last_color)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 151, in status  
self._draw_text(msg, color, secondary)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/ui/statusbar.py", line 161, in _draw_text  
draw_overlays(dlist, self._renderer)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1579, in draw_overlays  
_draw_multiple(drawings, r, Drawing.TRANSPARENT_DRAW_PASS)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1539, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 752, in draw  
self.draw_self(renderer, draw_pass)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 763, in draw_self  
self._draw_geometry(renderer, transparent_only = any_opaque)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 786, in _draw_geometry  
ds.activate_bindings(renderer)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1898, in activate_bindings  
self.update_buffers()  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1888, in update_buffers  
bi.bind_shader_variable(b)  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 2514, in bind_shader_variable  
GL.glVertexAttribPointer(attr_id, ncomp, gtype, normalize, 0, None)  
File "src/latebind.pyx", line 51, in OpenGL_accelerate.latebind.Curry.__call__  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/GL/VERSION/GL_2_0.py", line 469, in glVertexAttribPointer  
contextdata.setValue( key, array )  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 58, in setValue  
context = getContext( context )  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 40, in getContext  
raise error.Error(  
OpenGL.error.Error: Attempt to retrieve context when no valid context  
  
OpenGL.error.Error: Attempt to retrieve context when no valid context  
  
File "/usr/libexec/UCSF-ChimeraX-daily/lib/python3.9/site-
packages/OpenGL/contextdata.py", line 40, in getContext  
raise error.Error(  
  
See log for complete Python traceback.  
  




OpenGL version: 4.6 (Core Profile) Mesa 21.3.8
OpenGL renderer: Mesa Intel(R) Xe Graphics (TGL GT2)
OpenGL vendor: Intel

Python: 3.9.11
Locale: en_US.UTF-8
Qt version: PyQt6 6.3.0, Qt 6.3.0
Qt runtime version: 6.3.0
Qt platform: wayland

XDG_SESSION_TYPE=wayland
DESKTOP_SESSION=gnome
XDG_SESSION_DESKTOP=gnome
XDG_CURRENT_DESKTOP=GNOME
WAYLAND_DISPLAY=wayland-0
GNOME_SETUP_DISPLAY=:1
DISPLAY=:0
Manufacturer: LENOVO
Model: 82FE
OS: Fedora Linux 35 
Architecture: 64bit ELF
Virtual Machine: none
CPU: 8 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
Cache Size: 12288 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:           7.6Gi       2.2Gi       843Mi       654Mi       4.5Gi       4.4Gi
	Swap:          7.6Gi          0B       7.6Gi

Graphics:
	00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01)	
	Subsystem: Lenovo Device [17aa:3f18]	
	Kernel driver in use: i915

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.10.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2021.10.8
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.4.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.38.2
    ChimeraX-AtomicLibrary: 7.0
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.7
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.4
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4.dev202205030131
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.1
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.2
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.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
    ChimeraX-Label: 1.1.1
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.5
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.9
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.18
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    cxservices: 1.2
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.6.0
    decorator: 5.1.1
    distro: 1.6.0
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    fonttools: 4.33.3
    funcparserlib: 1.0.0
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.27
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.10.0
    kiwisolver: 1.4.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    msgpack: 1.0.3
    nest-asyncio: 1.5.5
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.0.1
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.29
    psutil: 5.9.0
    ptyprocess: 0.7.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.8
    PyQt6-commercial: 6.3.0
    PyQt6-Qt6: 6.3.0
    PyQt6-sip: 13.3.1
    PyQt6-WebEngine-commercial: 6.3.0
    PyQt6-WebEngine-Qt6: 6.3.0
    python-dateutil: 2.8.2
    pytz: 2022.1
    pyzmq: 22.3.0
    qtconsole: 5.3.0
    QtPy: 2.1.0
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    setuptools: 59.8.0
    sfftk-rw: 0.7.2
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.9
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0
File attachment: error_opening_chimeraxdaily

error_opening_chimeraxdaily

Attachments (1)

error_opening_chimeraxdaily (5.7 KB ) - added by murpholinox@… 3 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (10)

by murpholinox@…, 3 years ago

Attachment: error_opening_chimeraxdaily added

Added by email2trac

in reply to:  2 comment:1 by murpholinox@…, 3 years ago

error disappears if I restart and change the session from (Gnome .. ie.
Wayland) to (Gnome on Xorg).



El mar, 3 may 2022 a la(s) 21:11, ChimeraX (ChimeraX-bugs-admin@cgl.ucsf.edu)
escribió:

comment:2 by pett, 3 years ago

Cc: chimera-programmers added
Component: UnassignedPlatform
Owner: set to Greg Couch
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionGnome: OpenGL.error.Error: Attempt to retrieve context when no valid context

Reported by Murpholino Peligro

comment:3 by Tom Goddard, 3 years ago

We ask Qt 6 to create a QOpenGLContext which works and QOpenGLContext.makeCurrent() works, but then PyOpenGL tries to use the context and it fails. That is probably because on Wayland Qt 6 made an EGL context and PyOpenGL is looking for an active OpenGL context.

The easiest solution would be if we can tell Qt6 to gives us an OpenGL context instead of an EGL context. Maybe that can be done with a Qt environment variable. The reporter got ChimeraX to work by switching the desktop from Gnome Wayland to Gnome on Xorg, but that is a heavy handed solution.

Another approach would be to replace our use of PyOpenGL with the Qt OpenGL API if that works with an EGL context. That approach could require a lot of changes because PyOpenGL handles numpy arrays and pointer arguments to OpenGL calls and those will likely be different in the Qt OpenGL.

A third approach is to tell PyOpenGL to use EGL. PyOpenGL claims to handle EGL. But PyOpenGL is barely maintained so may run into trouble using obscure features.

http://pyopengl.sourceforge.net

Here is some useful info on the interplay between the Wayland compositor (which replaces X11) and OpenGL and XWayland.

https://unix.stackexchange.com/questions/511134/why-wayland-is-using-opengl-es-instead-of-opengl

In order to explore any of these solutions we would need to have a Linux system using Wayland.

comment:4 by Tom Goddard, 3 years ago

We could try Wayland on our Ubuntu 20.04 machine minsky.

https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-20-04-desktop

comment:5 by Greg Couch, 3 years ago

Murpholino,

For now, ChimeraX needs to use XWayland. So the reported Qt platform should be xcb not wayland. So how are you forcing ChimeraX to use Wayland? Are you seeing the QT_PLATFORM environment variable? Regardless, if you don't force it, it should work.

in reply to:  7 comment:6 by goddard@…, 3 years ago

The reporter said he switched to Gnome on Xorg to get it to work.  We should make ChimeraX request XWayland if there is a way to do that.

comment:7 by Greg Couch, 3 years ago

Yes, ChimeraX should automatically be requesting XWayland and it does under some circumstances. We need to figure out when it does and doesn't do the right thing.

comment:8 by Greg Couch, 3 years ago

The workaround is to set the QT_QPA_PLATFORM to xcb before running ChimeraX. For example:

env QT_QPA_PLATFORM=xcb chimerax

comment:9 by Greg Couch, 3 years ago

Resolution: fixed
Status: assignedclosed

Put setting QT_QPA_PLATFORM to xcb, when the XDG_SESSION_TYPE is wayland, in the 1.4 release candidate and the daily builds

Note: See TracTickets for help on using tickets.