xpra icon
Bug tracker and wiki

Opened 3 weeks ago

Closed 23 hours ago

#1994 closed defect (fixed)

opengl can crash as we probe it

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 2.5
Component: client Version: 2.4.x
Keywords: Cc:

Description (last modified by Antoine Martin)

Maybe add a opengl=failsafe mode and run the gl check in a subprocess so that we can continue without when it crashes:

$ ./xpra/client/gl/gl_check.py
Gtk-Message: 21:10:38.426: Failed to load module "canberra-gtk-module"
No OpenGL_accelerate module loaded: No module named OpenGL_accelerate
testing <class 'xpra.platform.xposix.gl_context.GLXContext'>
OpenGL Warning: Failed to connect to host. Make sure 3D acceleration is enabled for this VM.
$ echo $?
1

Change History (4)

comment:1 Changed 3 weeks ago by Antoine Martin

Description: modified (diff)
Status: newassigned

comment:2 Changed 2 weeks ago by Antoine Martin

Mostly done in r20862 via a hidden "opengl-probe" subcommand.

The code can be more easily triggered with:

XPRA_OPENGL_FORCE_TIMEOUT=10

to make the probe command timeout

XPRA_OPENGL_FORCE_CRASH=1

to make the probe command segfault

With either of those commands, or a buggy driver that crashes (ie: virtualbox), the client will run with opengl disabled and the status of the probe will be shown on session info.

Still TODO:

  • suppress some log output when probing
  • fix python3 mode..
  • more testing, especially platform testing
  • maybe add a "opengl-test" subcommand that does a test render on an actual window?
Last edited 2 weeks ago by Antoine Martin (previous) (diff)

comment:3 Changed 2 weeks ago by Antoine Martin

Updates:

  • r20874: re-probe in the client unless we had a timeout or crash, that way we can show the problem / greylist details in the user notification
  • r20873: suppress logging, unless in debug mode (r20875)
  • r20872: pyopengl vs accelerate version mismatch is now an error (known to cause crashes)
  • r20870: preserve python interpreter version for subcommands, to ensure we test the same thing!
  • r20876: python3 (refactoring)
  • r20877: also run the test rendering pass
  • r20878: makes 'probe' the default

Only one thing left: maybe remove some of the blacklisted drivers now that crashes during probing aren't fatal?

comment:4 Changed 23 hours ago by Antoine Martin

Resolution: fixed
Status: assignedclosed

r20983 removes most drivers from the blacklist, the probing should still discard them if they really are buggy.

Note: See TracTickets for help on using tickets.