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
