Hi all,[...]
I have just reported a concurrency issue in the implementation of
sem_lock, see https://bugzilla.kernel.org/show_bug.cgi?id=105651
[...]
# P0 does spin_lock(&sem->lock); in line 336.
spin_lock(&sem->lock);
# P2 performs rest of semtimedop, increments complex_count and ends upThat is the problem: semtimedop() increments complex_count - thus sem_wait_array() returns without a spin_unlock_wait() loop - but P0 already owns spin_lock(&sem->lock).
in line 1961 and starts to sleep.
return -1;
}