Hmmm.... Looking over the timed stuff, it seems that semtimedop() is used incorrectly.
For both pthread_mutex_timedlock() and sem_timedwait(), the timeout variable is the actual wallclock time that the wait expires (eg: now+5mins). But, from what I can read about semtimedop(), its timeout really is a timeout (5mins). But it seems that we use it as if it was wall-clock time, which is WAY wrong... Can someone check to see what exactly the timeout value is for semtimedop()? Is it a delta or a wall-clock?