Hi, I'm trying to fix bug 7265, but I'm stuck. I added some debugging output to the xserver and the mga driver and I attached the interesting parts of the lock.
What's interesting is that DRILock()/DRIUnlock() are continually called about every second even if no DRI client is connected. This might be due to XAA rendering though, and it seems XAA cannot be disabled without disabling DRI, too. As my test case, I started glxinfo in a xterm (which hangs in mgaGetLock(), as expected). This is line 18 in the log. At the end of the log, you'll see that DRIDoBlockHandler() results in another DRIUnlock() call, although the lock isn't currently held. Now, the problem is that I cannot figure out why and how DRIDoBlockHandler() is called. It's assigned to the DRI inforec->wrap.BlockHandler, but I don't see when it's called. To make things worse, I cannot get a backtrace either... attaching GDB or using xorg_backtrace() will crash the server. Any idea what's wrong with the locking here? Hints on when DRIDoBlockHandler is called or why it can be called even though the DRI lock isn't held are appreciated :) Thanks, Tilman -- A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing on usenet and in e-mail?
DRIWakeupHandler (II) MGA(0): MGAWakeupHandler (mga_dri.c) locking. flags = 0 (II) MGA(0): MGABlockHandler (mga_driver.c) DRIBlockHandler (II) MGA(0): MGABlockHandler (mga_dri.c) unlocking DRIWakeupHandler (II) MGA(0): MGAWakeupHandler (mga_dri.c) (II) MGA(0): MGABlockHandler (mga_driver.c) DRIBlockHandler (II) MGA(0): MGABlockHandler (mga_dri.c) # last block repeated 3 times # at about this time, I started glxinfo: DRIWakeupHandler (II) MGA(0): MGAWakeupHandler (mga_dri.c) locking. flags = 0 (II) MGA(0): MGABlockHandler (mga_driver.c) DRIBlockHandler (II) MGA(0): MGABlockHandler (mga_dri.c) unlocking DRIWakeupHandler (II) MGA(0): MGAWakeupHandler (mga_dri.c) (II) MGA(0): MGABlockHandler (mga_driver.c) DRIBlockHandler (II) MGA(0): MGABlockHandler (mga_dri.c) # last block repeated ~10 times DRIWakeupHandler (II) MGA(0): MGAWakeupHandler (mga_dri.c) DRIDoBlockHandler DRIUnlock called when not locked DRIDoWakeupHandler locking. flags = 0
pgptwoUYimV5W.pgp
Description: PGP signature
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
-- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel