[Stackless] Example Re: Requesting Comments for a Deadlock Detection Module

andrewfr_ice at yahoo.com andrewfr_ice at yahoo.com
Fri Apr 3 21:02:16 CEST 2009


Hi Christian:

--- On Fri, 4/3/09, stackless-request at stackless.com <stackless-request at stackless.com> wrote:

> I don't really get where the problem is. It is IMHO
> just fine to detect and analyze this first simple deadlock.
> How would you think to do more than this? The example
> has a very predictable future, because it is constructed
> this way.

I have included a more complex example. The example comes from a problem I had in December 2005 when I was first starting to learn Stackless Python. I was trying to figure out how to implement WS-BPEL links (links are a workflow construct - links impose a logical ordering on the tasklets). 

Asgeir Ingvarsson's analysis of the problem was on the money. My detector is based on Asgeir's observation:

<blockquote Asgeir>
Well as I understand it, E has only announced it's intention
to read on CtoE and is blocked before it can call receive on BtoE.
**Therefore the scheduler has no knowledge of E's intent to read on BtoE.**

Also, it seems to me that C is waiting for B not E
   E is trying to read from C
   B is trying to write to E
   C is trying to read from B
</blockquote>

(** my emphasis **)

Here are the references:

http://www.stackless.com/pipermail/stackless/2005-December/000290.html
http://www.stackless.com/pipermail/stackless/2005-December/001380.html
http://www.stackless.com/pipermail/stackless/2005-December/001921.html

Using the DeadlockDetector, this is the output:

[(D, C, CtoD), (C, B, BtoC), (B, E, BtoE), (E, C, CtoE)]

Note, I am not sure why occasionally the detector adds the extra node, but it always shows the cycle. I have look into this.

Again, Christian, thanks for your comments. I wish people would try out the detector - so I can get feedback and improve it.

Cheers,
Andrew


      
-------------- next part --------------
A non-text attachment was scrubbed...
Name: december2005.py
Type: application/octet-stream
Size: 3075 bytes
Desc: not available
URL: <http://www.stackless.com/pipermail/stackless/attachments/20090403/6dc1fa6c/attachment.obj>


More information about the Stackless mailing list