I did not know until this week that there was something called "Livelock"; Eh? I heard of Deadlock what the heck is Livelock? Well it is kind of the opposite of Deadlock (in some respects).
A Deadlock as we know is when say Process A is waiting for Process B to finish or release some resource or something before continuing and Process B in turn is waiting for Process A before it continues – end result neither continues.
Livelock is when Process A is running and is constantly changing e.g. stuck in a very long running or infinite loop and quite often causes resources to run out (a.k.a Resource Starvation).
My classic example of this was when I was using Turbo C 2.0, many moons ago and after a point I could not compile anymore because the compiler was running out of stack space – as the program had grown than big in size. I had to move to Turbo C++ compiler as that could address more than 512 KB or memory which the Turbo C compiler could not. All these years and I did not know I was experiencing a Livelock!