If I can refer my learned friend to the man page again for pthread_kill:-
"If sig is 0, then no signal is sent, but error checking is still performed;
this can be used to check for the existence of a thread ID."
If I try to join with a non existent thread I have the same issue with invalid pthread_t's. Trust me I've tried.
Thanks anyway.