Re: Hanging renders

Georg Bauer <gb-BRhJDZTO+/[email protected]> Tue, 13 Jul 2004 23:42:12 +0200
Newsgroups gmane.comp.pythin.pyds.devel
Message-ID <[email protected]>
Hi!

> mesh(_acquire): waiting for lock at Tue Jul 13 16:49:24 2004

Yep, that's a hanging lock.

> I *suspect* I've either got a single thread trying to acquire the lock
> twice, or two threads deadlocking, or one thread dying whilst it has 
> the
> lock. Is there any infrastructure to help me resolve this?

Ugh. There was some, but I don't think it's still fully in place. But 
since you do know that it's in the mes _acquire call, you can just 
overload _acquire in MeshTool and put in some debugging code and wait 
for the next time the problem occurs. Since locks are related to tools, 
the blocking usually comes from just missing _release() calls.

My favorite would be the index_html: you do a self._acquire outside a 
try:finally: block - usually I do try:finally: blocks to acquire and 
release, so that exceptions don't leave locks dangling. Another thing 
might be related to your ObjectDetail class, where you rely on the 
tools locks - this would do locks in foreign tools, so there might be 
chances for deadlocks.

bye, Georg