Oleg Kobchenko wrote:
> Too late, it's already out there. So now it just has to be fixed.
> Otherwise it will stay in the attick forever.

I believe I've fixed the problem.
 
And, now that I've identified it, I am suspicious of my earlier impressions
of its origin.
 
The problem was doEach.  I wrote doEach to process the result
from sdselect.  The result of sdselect is three boxes of sockets --
those read for reading, those ready for writing, and those which
have hit some kind of exceptional condition.  So, I wanted to run
each of three different handlers (one for each box) against the
sockets in each box.
 
The problem was that the result of doEach sometimes conflicted.
 
But I didn't care about the result -- so the solution was to make
that result an empty constant.
 
This was hard to track down because it doesn't always happen.
 
That said, once it does happen there's nothing much mysterious
about it, and I should have isolated the problem earlier.  (I plead
lack of focus on this bit of code.)
 
That said, I've not entirely eliminated the possibility that other
such race conditions (hard to reproduce problems) also lurk in the
code.
 
-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to