I can think of at least one situation when this could occur, involving Channel Preference of 1 (Sender):
Channel N is created with preference 1 Tasklet A and B start Tasklet A runs, receives on N, and blocks Tasklet B sees N has balance -1, so sends to N. Due to Preference, B will not yield, instead A is placed at end of runnables queue. The channel's balance is now 0. Tasklet B continues running, sees N has a balance of 0, so does not send. Repeat ad infinitum. Tasklet B never explicitly schedules or gets blocked otherwise, and so A never wakes up. On Fri, Jul 10, 2009 at 7:32 PM, Richard Tew <[email protected]>wrote: > On Sat, Jul 11, 2009 at 2:48 AM, Paul Sijben<[email protected]> wrote: > > I tracked down a bug in my code that occasionally popped up to > > channel.balance being wrong sometimes. > > > > Some part of my code can not afford to block, so it checks the balance > > wheter it should send something into the channel. If there is a receiver > > waiting on it, that is fed by a send and the sender will not block. Now > > I find that just occasionally the process stalls because there is a > > receiver waiting but the sender does not send as channel.balance==0 > > instead of -1! > > > > I am running the current 2.6.2 version of stackless > > (Python 2.6.2 Stackless 3.1b3 060516 (python-2.6.2:73804M, Jul 3 2009, > > 11:33:51) ) > > > > Is this issue known, and possibly solved in svn? > > This issue is not known. It is the first someone has even suggested > it might be happening. During the eight years or so I was at C.C.P., > I never saw the likes of it. > > I would be inclined to believe that there was something wrong with > your logic, rather than the channel code. And without a reproduction > case, it is unlikely that it will ever be reproduced unfortunately. > > Cheers, > Richard. > > _______________________________________________ > Stackless mailing list > [email protected] > http://www.stackless.com/mailman/listinfo/stackless >
_______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless
