Hello Blue Murder & friends,
Not too worried what goes on in the thread; I don't claim ownership of it. However, I have some potential bugs that I have found in wdsp code that I will need to take up with Warren directly at some point if he is receptive.
Now I know that a happy Anan user will claim it "can't be the software, I have never once seen picket fence/Dalek/distortion" however there is a notion in C of undefined behaviour. I think I see it in the code, though it needs an expert to check.
When UB occurs, anything can happen. Your rig may work perfectly, forever. Your PS may work 99/100 or even 99/1000 and be fine the rest of time. Next door's cat can get pregnant.
Undefined behavior - Wikipedia
I think this may well be the case here. What makes it so difficult to debug is that there are a couple of threads that are created from scratch not only every time PS is entered, but every time a change is encountered. Since static PS does not spawn these threads, and is stable, this seems to me to be the logical place to look. For those in the know, the time between when you ask for a thread to start, and when it actually starts, is unbounded. It could take 1 microsecond or tens of millis. But it needs a lot of time and effort to deal with it, ideally with a multi-threading expert. And you can count how many of them there are in the world with one hand.
The best thing for now is for everyone to use their favourite revision of my, or anyone else's code; the one that works for your use-case. This, being a github project, you can 'rewind' to your favourite incarnation and compile it, and it will work for you! Every change on every commit is saved and retrieveable. So if you want the PS-M version, just rewing back a few commits and use that one. If you have it already, keep using it.
Bear in mind that this issue may never be resolved (many UB cases are not) and so that's another reason to use what works for you!
Have fun, everyone!
Steve