Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#4891 closed defect (can't reproduce)

glUniformMatrix4fv: invalid operation

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19041
ChimeraX Version: 1.2.5 (2021-05-24 04:13:57 UTC)
Description
Filled out registration dialog and submitted.
Then opened 4hus which worked.  Then rotated with mouse for a second and got this error.

Log:
UCSF ChimeraX version: 1.2.5 (2021-05-24)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  
Thank you for registering your copy of ChimeraX. By providing the information
requested you will be helping us document the impact this software is having
in the scientific community. The information you supplied will only be used
for reporting summary usage statistics; no individual data will be released.  
goddard@sonic.net is subscribed to the ChimeraX announcements list  

> open 4hus format mmcif fromDatabase pdb

4hus title:  
Crystal structure of streptogramin group A antibiotic acetyltransferase VatA
from Staphylococcus aureus in complex with virginiamycin M1 [more info...]  
  
Chain information for 4hus #1  
---  
Chain | Description  
A B C | Virginiamycin A acetyltransferase  
  
Non-standard residues in 4hus #1  
---  
CL — chloride ion  
EDO — 1,2-ethanediol (ethylene glycol)  
NA — sodium ion  
PEG — di(hydroxyethyl)ether  
PGE — triethylene glycol  
SO4 — sulfate ion  
VIR — virginiamycin M1  
  
An error occurred in drawing the scene. Redrawing graphics is now stopped to
avoid a continuous stream of error messages. To restart graphics use the
command "graphics restart" after changing the settings that caused the error.  
  
Traceback (most recent call last):  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\core\updateloop.py", line 73, in draw_new_frame  
view.draw(check_for_changes = False)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\view.py", line 165, in draw  
self._draw_scene(camera, drawings)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\view.py", line 233, in _draw_scene  
draw_opaque(r, opaque_drawings)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\drawing.py", line 1498, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\drawing.py", line 1511, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\drawing.py", line 751, in draw  
self.draw_self(renderer, draw_pass)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\drawing.py", line 758, in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\drawing.py", line 789, in _draw_geometry  
shader = r.shader(sopt)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\opengl.py", line 636, in shader  
p = self._opengl_shader(options)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\opengl.py", line 739, in _opengl_shader  
self._use_shader(p)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\opengl.py", line 663, in _use_shader  
self.set_projection_matrix()  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\opengl.py", line 755, in set_projection_matrix  
p.set_matrix('projection_matrix', pm)  
File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-
packages\chimerax\graphics\opengl.py", line 2748, in set_matrix  
GL.glUniformMatrix4fv(self.uniform_id(name), 1, False, matrix)  
File "src/latebind.pyx", line 39, in
OpenGL_accelerate.latebind.LateBind.__call__  
File "src/wrapper.pyx", line 318, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "src/wrapper.pyx", line 311, in
OpenGL_accelerate.wrapper.Wrapper.__call__  
File "src/errorchecker.pyx", line 58, in
OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError  
OpenGL.error.GLError: GLError(  
err = 1282,  
description = b'invalid operation',  
baseOperation = glUniformMatrix4fv,  
pyArgs = (  
3,  
1,  
False,  
<OpenGL.arrays.lists.c_float_Array_4_Array_4 object at 0x0000014B94C8CE40>,  
),  
cArgs = (  
3,  
1,  
False,  
<OpenGL.arrays.lists.c_float_Array_4_Array_4 object at 0x0000014B94C8CE40>,  
),  
cArguments = (  
3,  
1,  
False,  
<OpenGL.arrays.lists.c_float_Array_4_Array_4 object at 0x0000014B94C8CE40>,  
)  
)  
  




OpenGL version: 3.3.0 NVIDIA 430.39
OpenGL renderer: Quadro P6000/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation
Manufacturer: Gigabyte Technology Co., Ltd.
Model: To be filled by O.E.M.
OS: Microsoft Windows 10 Home (Build 19042)
Memory: 66,135,482,368
MaxProcessMemory: 137,438,953,344
CPU: 8 Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
OSLanguage: en-US
Locale: ('en_US', 'cp1252')
PyQt5 5.15.2, Qt 5.15.2
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 2.0.1
    certifi: 2020.12.5
    cftime: 1.5.0
    chardet: 3.0.4
    ChimeraX-AddCharge: 1.0.1
    ChimeraX-AddH: 2.1.6
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.13.2
    ChimeraX-AtomicLibrary: 3.1.3
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.5.2
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.2.1
    ChimeraX-CommandLine: 1.1.4
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.5
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.1.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.3
    ChimeraX-DistUI: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.0
    ChimeraX-Hbonds: 2.1
    ChimeraX-Help: 1.1
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-Label: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.0.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.0
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 1.2.1
    ChimeraX-MDcrds: 2.2
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.3
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.0.1
    ChimeraX-ModelPanel: 1.0.1
    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.1
    ChimeraX-OpenCommand: 1.5
    ChimeraX-PDB: 2.4.1
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.1
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-ReadPbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.4
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.3
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.0
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.0.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.3.1
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0.1
    ChimeraX-ToolshedUtils: 1.2
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.7.6
    ChimeraX-uniprot: 2.1
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 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.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.3
    comtypes: 1.1.7
    cxservices: 1.0
    cycler: 0.10.0
    Cython: 0.29.21
    decorator: 5.0.9
    distlib: 0.3.1
    docutils: 0.16
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 2.10.0
    html2text: 2020.1.16
    idna: 2.10
    ihm: 0.17
    imagecodecs: 2020.5.30
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.7.1
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.6.2
    lz4: 3.1.0
    MarkupSafe: 2.0.1
    matplotlib: 3.3.2
    msgpack: 1.0.0
    netCDF4: 1.5.4
    networkx: 2.5
    numexpr: 2.7.3
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.9
    ParmEd: 3.2.0
    parso: 0.7.1
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 21.0.1
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.18
    psutil: 5.7.2
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PyQt5-commercial: 5.15.2
    PyQt5-sip: 12.8.1
    PyQtWebEngine-commercial: 5.15.2
    python-dateutil: 2.8.1
    pytz: 2021.1
    pywin32: 228
    pyzmq: 22.0.3
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    setuptools: 50.3.2
    sfftk-rw: 0.6.7.dev1
    six: 1.15.0
    snowballstemmer: 2.1.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.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-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.36.0
    wheel-filename: 1.3.0
    WMI: 1.5.1

Change History (5)

comment:1 by Eric Pettersen, 4 years ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionglUniformMatrix4fv: invalid operation

comment:2 by Tom Goddard, 4 years ago

Did not reproduce when I restarted ChimeraX.

Besides submitting registration at startup, during startup I updated Steam. Probably unrelated but who knows what magic it might have done with the graphics driver.

comment:3 by Tom Goddard, 4 years ago

This has been reported 3 times before, never with any clues about the cause.
The invalid operation probably means either there is no current shader program, or the current shader program does not have the projection matrix shader variable. Code where error occurred is

        p = self.current_shader_program
        if p is not None and not (p.capabilities & self.SHADER_NO_PROJECTION_MATRIX):
            p.set_matrix('projection_matrix', pm)

Seems most likely that no shader program was current. Maybe it has something to do with mouse hover or status messages during the rendering causing an OpenGL context change.

comment:4 by Tom Goddard, 4 years ago

Resolution: can't reproduce
Status: assignedclosed

The glUseProgram() call was just only a few calls earlier in the _use_shader() method. The 4hus model opens with no shadows. But just before this error it should have set the depth cue parameters, which should have generated an error if there was no current shader. Could it be a shader with not projection_matrix variable? Looks not possible since code checks for all the shaders that have no projection matrix.

There is a shader.validate_program() call at the end of the _use_shader() routine. Seems odd to put it at the end.

Still it seems the depth cue was set successfully and then the projection matrix set failed. Hard to fathom.

Could Qt have changed the current OpenGL context in the main thread? It could have run another thread but I think each thread has its own OpenGL context, so I don't see how it could change the context of the main thread.

comment:5 by Tom Goddard, 4 years ago

Seems likely that the bug requires some timing issue.

Note: See TracTickets for help on using tickets.