A thread can still deadlock with itself with non-recursive mutexes or spinlocks. Also assuming a single CPU system is no longer relevant today.
"Thread halting is a not problem as long as it resumes"
the whole point of a non blocking algorithm is that it gives guarantees if a thread doesn't resume for whatever reason.