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: | 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
Attachments (1)
Change History (10)
by , 3 years ago
Attachment: | error_opening_chimeraxdaily added |
---|
comment:1 by , 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ó:
follow-up: 1 comment:2 by , 3 years ago
Cc: | added |
---|---|
Component: | Unassigned → Platform |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Gnome: OpenGL.error.Error: Attempt to retrieve context when no valid context |
Reported by Murpholino Peligro
comment:3 by , 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.
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 , 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 , 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.
comment:6 by , 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.
follow-up: 6 comment:7 by , 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 , 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 , 3 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Put setting QT_QPA_PLATFORM to xcb, when the XDG_SESSION_TYPE is wayland, in the 1.4 release candidate and the daily builds
Added by email2trac