I'm having issues with glean crashing with r600 because of some GLX
context handling issues. I've been looking over the code, and to be
honest I don't understand how things are ever supposed to work.
Hopefully someone here has more insight.

In MakeContextCurrent() the old context is first unbound from the
drawable using driUnbindContext, then destroyed using
driDestroyContext. The problem occurs in the radeon driver which
flushes any outstanding commands when the context is destroyed, but at
that point the drawable is already unbound (and hence no longer
accessible).

The drawable reference is killed in dri_util.c:151:

    pcp->driDrawablePriv = pcp->driReadablePriv = NULL;

And here's the traceback from when the radeon driver still expects a
reachable drawable:

#3  0x00007ffff7690a16 in radeonGetLock (rmesa=0x6f3aa0, flags=<value optimized 
out>) at radeon_lock.c:65
#4  0x00007ffff768bc11 in rcommonFlushCmdBuf (rmesa=0x6f3aa0, 
caller=0x7ffff7837af2 "radeonFlush") at radeon_common.c:1233
#5  0x00007ffff768d9ef in radeonFlush (ctx=0x6f7cc0) at radeon_common.c:1129
#6  0x00007ffff7687283 in radeon_firevertices (radeon=0x6f3aa0) at 
radeon_cmdbuf.h:118
#7  r600DeleteTexture (radeon=0x6f3aa0) at r600_tex.c:359
#8  0x00007ffff77130b6 in _mesa_free_texture_data (ctx=0x6f7cc0) at 
main/texstate.c:792
#9  0x00007ffff76a4f85 in _mesa_free_context_data (ctx=0x6f7cc0) at 
main/context.c:980
#10 0x00007ffff76a50ee in _mesa_destroy_context (ctx=0x6f7cc0) at 
main/context.c:1042
#11 0x00007ffff768a9c1 in radeonDestroyContext (driContextPriv=<value optimized 
out>) at radeon_common_context.c:329
#12 0x00007ffff7668690 in driDestroyContext (pcp=0x6f0790) at 
../common/dri_util.c:545
#13 0x00007ffff7b3809f in driDestroyContext (context=0x6f0750, psc=0x6e5e30, 
dpy=<value optimized out>) at dri_glx.c:495
#14 0x00007ffff7b15c34 in MakeContextCurrent (dpy=0x6dabd0, draw=8388614, 
read=8388614, gc=0xa931a0) at glxcurrent.c:454
#15 0x0000000000470dc8 in GLEAN::WindowSystem::makeCurrent (this=<value 
optimized out>, r=<value optimized out>, w=...) at winsys.cpp:253
#16 0x0000000000412778 in GLEAN::BaseTest<GLEAN::MultiTestResult>::run 
(this=0x6cc9c0, environment=<value optimized out>) at tbase.h:295
#17 0x000000000040d0bc in main (argc=6, argv=0x7fffffffe5c8) at main.cpp:140

-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by FRA, a
  Swedish intelligence agency. Make sure your server uses
  encryption for SMTP traffic and consider using PGP for
  end-to-end encryption.

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to