+ pthread_barrier_destroy(&barrier2);
+
+ // enough time to ensure that the detached thread is dead
+ clock_gettime(CLOCK_REALTIME, &ts);
+ ts.tv_nsec += 100*1000*1000;
+ if (ts.tv_nsec >= 1000*1000*1000) {
+ ts.tv_sec++;
+ ts.tv_nsec -= 1000*1000*1000;
+ }
+
+ TX(r, pthread_mutex_timedlock(&mtx, &ts), EOWNERDEAD);
+}
+
+int main(void)
+{
+ // test non-pshared and pshared robust mutexes as well
+ f();
+ pshared = 1;
+ f();