Both the POSIX specification and the Linux man pages indicate that pthread_mutex_destroy() should only return EBUSY when "The implementation has detected an attempt to destroy the object referenced by mutex while it is locked or referenced (for example, while being used in a pthread_cond_timedwait() or pthread_cond_wait()) by another thread." That is not the case in the test program that I provided, so I believe that the assumption that EBUSY should not occur is correct per the specification. https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_destroy.html https://linux.die.net/man/3/pthread_mutex_destroy