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

Attachment: 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

Reply via email to