terminate: fix oversubscribe hang when waiting for other threads on same CPU to die

Change-Id: I8c4fbdd3aab9d0567ce5457a4a6405490608925d
This commit is contained in:
Dominique Martinet
2018-05-25 10:19:17 +09:00
committed by Dominique Martinet
parent 68c702d024
commit 6f7c428a34

View File

@ -1049,7 +1049,8 @@ void terminate(int rc, int sig)
break;
}
__mcs_rwlock_reader_unlock(&proc->threads_lock, &lock);
cpu_pause();
/* We might be waiting for another thread on same CPU */
schedule();
}
mcs_rwlock_writer_lock(&proc->threads_lock, &lock);