[Mesa-dev] glXMakeCurrent crashes (was: Re: How to obtain OpenGL implementation/driver information?)

Benoit Jacob bjacob at mozilla.com
Mon Feb 7 08:42:34 PST 2011


----- Original Message -----
> > Thinking about this yesterday, I think the biggest question is the
> > one
> > that Dave posed. If glXMakeCurrent() is killing the WebGL tests,
> > then
> > this would imply that glxinfo also shows the same bug, since glxinfo
> > is almost entirely composed of getting a GL context and pulling
> > strings and limits from it. However, nothing so far has indicated
> > that
> > glxinfo is broken on these systems. So, what are Fx and Chromium
> > doing
> > differently or *besides* glXMakeCurrent, that causes these bugs to
> > be
> > exposed?
> 
> Actually, a Google search for 'glxinfo crash' gives lots of results:
> 
> http://www.google.ca/search?q=glxinfo+crash
> 
> I get 143,000 results; restricting to the past year, I still get
> 11,500; and even if it turned out that glxinfo crashes had disappeared
> on current versions, I would still need a way of identifying these new
> versions.

To be more specific and reproducible, here are various bug reports about glxinfo crashes, from this google search:

https://bugzilla.redhat.com/show_bug.cgi?id=658285
https://bugzilla.redhat.com/show_bug.cgi?id=656308
https://bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/555158
http://ubuntuforums.org/showthread.php?s=60bc14919a13367ba32a2f6b48489d18&t=1046585
https://defect.opensolaris.org/bz/show_bug.cgi?id=5447
https://defect.opensolaris.org/bz/show_bug.cgi?id=5493

Benoit

> 
> It now seems to me that our best bet is to follow Brian's advice and
> create a tiny "glxinfo-like" app, to be run as a separate process at
> Firefox startup.
> 
> Cheers,
> Benoit
> 
> >
> > ~ C.
> >
> > On Fri, Feb 4, 2011 at 3:29 PM, Zhenyao Mo <zmo at google.com> wrote:
> > > I have to agree with Benoit here. The capability to obtain driver
> > > information safely in linux is important. It's surprising that
> > > there
> > > is no way we can do it at the moment (at least not that I am aware
> > > of,
> > > and I've asked around quite a few linux experts here at Google
> > > already).
> > >
> > > Zhenyao
> > >
> > > On Fri, Feb 4, 2011 at 3:26 PM, Benoit Jacob <bjacob at mozilla.com>
> > > wrote:
> > >>
> > >>
> > >> ----- Original Message -----
> > >>> On Fre, 2011-02-04 at 14:21 -0800, Benoit Jacob wrote:
> > >>> >
> > >>> > ----- Original Message -----
> > >>> > > Benoit Jacob wrote:
> > >>> > > > ----- Original Message -----
> > >>> > > >> On Thu, Feb 3, 2011 at 4:37 PM, Benoit Jacob
> > >>> > > >> <bjacob at mozilla.com>
> > >>> > > >> wrote:
> > >>> > > >>> I'm trying to see how to implement selective
> > >>> > > >>> whitelisting/blacklisting of driver versions on X11 (my
> > >>> > > >>> use
> > >>> > > >>> case
> > >>> > > >>> is
> > >>> > > >>> to whitelist drivers for Firefox). The naive approach
> > >>> > > >>> consists
> > >>> > > >>> in
> > >>> > > >>> creating an OpenGL context and calling glGetString(),
> > >>> > > >>> however
> > >>> > > >>> that
> > >>> > > >>> is not optimal for me, for these reasons:
> > >>> > > >>>  * This has been enough to trigger crashes in the past.
> > >>> > > >>>
> > >>> > > >>> Ideally I want to be able to know the driver name,
> > >>> > > >>> driver
> > >>> > > >>> version,
> > >>> > > >>> Mesa version, and any other thing that you think may be
> > >>> > > >>> relevant.
> > >>> > > >>> I
> > >>> > > >>> need to get that information in a fast and safe way.
> > >>> > > >>>
> > >>> > > >> There is no other way than glGetString if you ever
> > >>> > > >> experienced
> > >>> > > >> crash
> > >>> > > >> with it, it would be because you are doing something
> > >>> > > >> terribly
> > >>> > > >> wrong
> > >>> > > >> like using it without current context.
> > >>> > > >
> > >>> > > > It's not glGetString that's crashing, it's glXMakeCurrent.
> > >>> > > >
> > >>> > > > I forwarded a bug report from a user, though he's not been
> > >>> > > > able
> > >>> > > > to
> > >>> > > > reproduce since:
> > >>> > > >
> > >>> > > >   https://bugs.freedesktop.org/show_bug.cgi?id=32238
> > >>> > > >
> > >>> > > > A search in Mesa's bugzilla confirms that I'm not alone:
> > >>> > > >
> > >>> > > >   https://bugs.freedesktop.org/show_bug.cgi?id=30557
> > >>> > >
> > >>> > > This latter bug looks like an i915 driver bug, as opposed to
> > >>> > > a
> > >>> > > MakeCurrent bug.
> > >>> > >
> > >>> > > > Since the glGetString way will at best be slow, especially
> > >>> > > > if we
> > >>> > > > have
> > >>> > > > to XSync and check for errors, could you consider exposing
> > >>> > > > this
> > >>> > > > information as new glXGetServerString / glXGetClientString
> > >>> > > > strings?
> > >>> > >
> > >>> > > ? I don't understand the logic here.
> > >>> > >
> > >>> > > You're hitting a bug in glXCreateContext or MakeCurrent or
> > >>> > > something
> > >>> > > like that. So you'd like to add an entire new way to query
> > >>> > > the
> > >>> > > same
> > >>> > > information a driver already provides, just to provide an
> > >>> > > alternate
> > >>> > > path
> > >>> > > that hopefully doesn't exhibit the bug?
> > >>> > >
> > >>> > > Just fix the bug! There's no reason for glX extensions to
> > >>> > > add
> > >>> > > new
> > >>> > > functions here.
> > >>> >
> > >>> > My point is just that bugs exist.
> > >>> >
> > >>> > Since bugs exist, I am trying to implement a driver blacklist.
> > >>> >
> > >>> > My problem is that with GLX it's tricky because I can't get
> > >>> > answer
> > >>> > to
> > >>> > the question "should I avoid creating GL contexts on this
> > >>> > driver"
> > >>> > without creating a GL context.
> > >>> >
> > >>> > I proposed to allow handling this in
> > >>> > glXQuery(Server|Client)String
> > >>> > because these functions are known to be non-crashy.
> > >>>
> > >>> What you're asking for is not possible, because the information
> > >>> you
> > >>> need
> > >>> depends on the context which is current. No shortcuts here I'm
> > >>> afraid. :)
> > >>
> > >> We're doing driver blacklists on all platforms, and it tends to
> > >> be
> > >> quite easy on other platforms. For example, on Windows, we just
> > >> read all the driver information from the registry. Couldn't X
> > >> drivers likewise have some metadata stored on disk, that could be
> > >> queried via some new API? I proposed GLX because
> > >> glXQueryServerString already knows about at least the driver
> > >> vendor. But I don't mind having it exposed elsewhere than in GLX
> > >> if
> > >> that makes more sense :)
> > >>
> > >> Please take this request seriously: driver blacklists are useful,
> > >> not limited to Firefox, and certainly not limited to X11. As I
> > >> say,
> > >> we blacklist drivers on all platforms, and we'd never have been
> > >> able to make Firefox 4 releasable without blacklisting many
> > >> Windows
> > >> drivers. Zhenyao Mo, in CC, is working on similar features in
> > >> Chromium.
> > >>
> > >> Cheers,
> > >> Benoit
> > >>
> > >>>
> > >>>
> > >>> --
> > >>> Earthling Michel Dänzer | http://www.vmware.com
> > >>> Libre software enthusiast | Debian, X and DRI developer
> > >>
> > > _______________________________________________
> > > mesa-dev mailing list
> > > mesa-dev at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > >
> >
> >
> >
> > --
> > When the facts change, I change my mind. What do you do, sir? ~
> > Keynes
> >
> > Corbin Simpson
> > <MostAwesomeDude at gmail.com>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list