OK here is the story of my gross stupidity and idiotism...with an unexpected twist...
The Pi 3 was complaining that it's supply voltage was dipping low when running xphl, no matter what USB wall wart or power bank I used. Time to hook up bigger supply.
The only thing I had to hand was a big black box from Vanson. It has a slide switch on the side to select 3v, 6v, 9v or 12v output. I remember now the first time I ever saw that thing that it was just an accident waiting to happen...
So I set the thing to 5v, chop a USB cable and hook it up to the Pi 3.
Well of course, it was time for that accident, whilst messing around with this and that the supply switch gets jiggled to 12 volts. Next time I power it up smokes starts billowing out. Quick as I can I turn it off. "Oh dear" is the polite version of what I shouted. Surely everything is dead.
Just out of curiosity, I set the thing back to 5 volts and tried again. Wow, the Pi booted. Everything still worked.
Well, xhpl was now causing the Pi 3 to complain it was getting too hot. Time for a heat sink.
If that is not interesting enough, I took a close look at the board for signs of damage. What's that...the diode D5 is now standing upright on one pad. Clearly it's solder had melted and it had "tombstoned" as they say in the PCB assembly business.
What is D5? Why do we need it? How come everything worked fine without it connected any more?
Otherwise the board looked fine.
If that is not stupid enough, guess what? The next day I managed to make the same mistake again! More smoke. This time the Pi 3 is dead.
Memory in C++ is a leaky abstraction .