One of the problems with multi-processing is what is called a race condition. That is what happens when two processes are fighting each other for whatever reason – for instance one process says if a > b then increase b. The other process says that if b > a then increase a. Both are trying to maintain some steady state, and it just aint working. That is a simplified view of this buy you get the idea. When debugging a Race Condition all you can do is help your chances of spotting it, and thinking in three dimensions. What happens if this happens? Could that strange thing affect something else. What seems to happen is that two events that might have a 1000:1 chance of happening then have a 100:1 chance. Well, it is not quite that linear, but that is the general software.

It is the law of unintended consequences. What if these four strange things happen at once. What if the data is corrupted in these four places all at once. That sort of thing. Thankfully, at least in this case I am getting somewhere. I have isolated the problem so that I can be working on it in my office, and I can reliably duplicate the isse. That is the important thing – reliably duplicate an issue. Without that you can never be sure if the issue has been resolved. Of course I need to ensure that my bug fixes do not have similar unintended consequences. Who would want to be a programmer.

I think it will doon be time to outsource the code to someone else… It is starting to get really complex, and although I would not say that I am beyond it… Just might be easier if I got a friend to work only on this code!