Hello,
We have a problem when using Napari (image software in Python) that suddenly crash with that msg error (see below) that could be link to the graphic card.
We have that problem for 2 computers with the same config’ with a Nvidia RTX A6000 but we don’t have problem with other computers (same env, same Windows but other Nvidia !!)
Computers with the problem:
Nvidia RTX A6000 with NVMe (tried multiple drivers versions from 2025)
Window 10 (up-to-date)
Memory 128Gb
Intel Xeon W-2295 3.00Ghz
Dell Precision 5820
Bug when using Napari (last version but also oldest version) with Python 3.10 or 3.9.
Could you help please ?
Here the msg:
WARNING: Error drawing visual
15:10:06 : WARNING : MainThread : Error drawing visual
OSError Traceback (most recent call last)
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\app\backends_qt.py:963, in CanvasBackendDesktop.paintGL(self=)
961 # (0, 0, self.width(), self.height()))
962 self._vispy_canvas.set_current()
→ 963 self._vispy_canvas.events.draw(region=None)
self._vispy_canvas =
self._vispy_canvas.events.draw =
self =
self._vispy_canvas.events =
965 # Clear the alpha channel with QOpenGLWidget (Qt >= 5.4), otherwise the
966 # window is translucent behind non-opaque objects.
967 # Reference: MRtrix3/mrtrix3#266
968 if QT5_NEW_API or PYSIDE6_API or PYQT6_API:
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\util\event.py:453, in EventEmitter.call(self=, *args=(), **kwargs={‘region’: None})
450 if self._emitting > 1:
451 raise RuntimeError(‘EventEmitter loop detected!’)
→ 453 self._invoke_callback(cb, event)
event =
self =
cb =
454 if event.blocked:
455 break
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\util\event.py:471, in EventEmitter._invoke_callback(self=, cb=, event=)
469 cb(event)
470 except Exception:
→ 471 _handle_exception(self.ignore_callback_errors,
self =
cb =
event =
(cb, event) = (, )
472 self.print_callback_errors,
473 self, cb_event=(cb, event))
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\util\event.py:469, in EventEmitter._invoke_callback(self=, cb=, event=)
467 def _invoke_callback(self, cb, event):
468 try:
→ 469 cb(event)
cb =
event =
470 except Exception:
471 _handle_exception(self.ignore_callback_errors,
472 self.print_callback_errors,
473 self, cb_event=(cb, event))
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\scene\canvas.py:219, in SceneCanvas.on_draw(self=, event=)
216 # Now that a draw event is going to be handled, open up the
217 # scheduling of further updates
218 self._update_pending = False
→ 219 self._draw_scene()
self =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\scene\canvas.py:278, in SceneCanvas._draw_scene(self=, bgcolor=array([0., 0., 0., 1.], dtype=float32))
276 bgcolor = self._bgcolor
277 self.context.clear(color=bgcolor, depth=True)
→ 278 self.draw_visual(self.scene)
self =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\scene\canvas.py:316, in SceneCanvas.draw_visual(self=, visual=, event=None)
314 else:
315 if hasattr(node, ‘draw’):
→ 316 node.draw()
node =
317 prof.mark(str(node))
318 else:
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\scene\visuals.py:106, in VisualNode.draw(self=)
104 if self.picking and not self.interactive:
105 return
→ 106 self._visual_superclass.draw(self)
self =
self._visual_superclass =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\visuals\visual.py:514, in Visual.draw(self=)
512 self._configure_gl_state()
513 try:
→ 514 self._program.draw(self._vshare.draw_mode,
self._vshare.draw_mode = ‘triangles’
self =
self._vshare =
self._program =
self._vshare.index_buffer = None
515 self._vshare.index_buffer)
516 except Exception:
517 logger.warning(“Error drawing visual %r” % self)
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\visuals\shaders\program.py:102, in ModularProgram.draw(self=, *args=(‘triangles’, None), **kwargs={})
100 self.build_if_needed()
101 self.update_variables()
→ 102 Program.draw(self, *args, **kwargs)
self =
args = (‘triangles’, None)
kwargs = {}
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\program.py:543, in Program.draw(self=, mode=‘triangles’, indices=None, check_error=True)
539 raise TypeError(“Invalid index: %r (must be IndexBuffer)” %
540 indices)
542 # Process GLIR commands
→ 543 canvas.context.flush_commands()
canvas =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\context.py:172, in GLContext.flush_commands(self=, event=None)
170 fbo = 0
171 self.shared.parser.parse([(‘CURRENT’, 0, fbo)])
→ 172 self.glir.flush(self.shared.parser)
self =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\glir.py:584, in GlirQueue.flush(self=, parser=)
582 def flush(self, parser):
583 “”“Flush all current commands to the GLIR interpreter.”“”
→ 584 self._shared.flush(parser)
parser =
self._shared =
self =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\glir.py:506, in _GlirQueueShare.flush(self=, parser=)
504 show = self._verbose if isinstance(self._verbose, str) else None
505 self.show(show)
→ 506 parser.parse(self._filter(self.clear(), parser))
self =
parser =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\glir.py:824, in GlirParser.parse(self=, commands=[(‘FUNC’, ‘glClearColor’, 0.0, 0.0, 0.0, 1.0), (‘FUNC’, ‘glClear’, 17664), (‘FUNC’, ‘glDisable’, ‘cull_face’), (‘FUNC’, ‘glDisable’, ‘depth_test’), (‘FUNC’, ‘glEnable’, ‘blend’), (‘FUNC’, ‘glBlendFuncSeparate’, ‘src_alpha’, ‘zero’, ‘one’, ‘one’), (‘FUNC’, ‘glBlendEquationSeparate’, ‘func_add’, ‘func_add’), (‘DRAW’, 48, ‘triangles’, (0, 6), 1)])
821 self.objects.pop(id)
823 for command in commands:
→ 824 self._parse(command)
command = (‘DRAW’, 48, ‘triangles’, (0, 6), 1)
self =
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\glir.py:786, in GlirParser._parse(self=, command=(‘DRAW’, 48, ‘triangles’, (0, 6), 1))
783 # Triage over command. Order of commands is set so most
784 # common ones occur first.
785 if cmd == ‘DRAW’: # Program
→ 786 ob.draw(*args)
args = (‘triangles’, (0, 6), 1)
ob =
787 elif cmd == ‘TEXTURE’: # Program
788 ob.set_texture(*args)
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\glir.py:1365, in GlirProgram.draw(self=, mode=GL_TRIANGLES, selection=(0, 6), instances=1)
1363 gl.glDrawArraysInstanced(mode, first, count, instances)
1364 else:
→ 1365 gl.glDrawArrays(mode, first, count)
mode = GL_TRIANGLES
count = 6
gl =
first = 0
1366 # Wrap up
1367 gl.check_error(‘Check after draw’)
File ~\anaconda3\envs\py310_napari_ND\lib\site-packages\vispy\gloo\gl_gl2.py:414, in glDrawArrays(mode=GL_TRIANGLES, first=0, count=6)
412 except AttributeError:
413 nativefunc = glDrawArrays._native = _get_gl_func(“glDrawArrays”, None, (ctypes.c_uint, ctypes.c_int, ctypes.c_int,))
→ 414 nativefunc(mode, first, count)
nativefunc =
mode = GL_TRIANGLES
first = 0
count = 6
OSError: exception: access violation reading 0x0000000000000034