The VM configuration dialog in ESXi 5 warns me that if I change the number of vCPUs after the guest OS is installed, the sky will fall - ahem - it 'might make my virtual machine unstable.'
I know that certain CPU instructions involved in thread serialization will require a LOCK prefix in a multiprocessor system but not in a uniprocessor system (or at least not with a single core). The OS will generally omit LOCKs where they're not needed.
If the OS uses a kernel that omits the LOCKs but uses multiple CPUs, then this would lead to extreme instability and difficult-to-isolate bugs. But if the kernel was designed for one processor then what is it doing using more than one (which it has to do knowingly)? This seems like a completely absurd OS design which I would hope doesn't exist in practice.
A more plausible OS design would be to detect CPUs on boot and pick either the uniprocessor or multiprocessor kernel accordingly. Failing that, the only other sensible design would install the correct kernel, but the uniprocessor kernel would simply never use the other processor and therefore there would be no harm in another CPU other than it not being used at all.
Application software could get into trouble a little easier because it's easy to use multiple threads even on a single-core system, so not paying heed to the fact that it's on a multiprocessor system and not LOCKing (or using the OS' facilities) could cause horrible bugs. But would any serious software have such a poor design as to test uni/multiprocessor status only during installation?
What is the reasoning behind the doomsday warning? On what, if any, OSes or applications should I actually expect problems?