It is not the mutex call, it is the cout after that. You reference the value as if it is a pointer while it is actually a long. Try the below changes:
void* Kevin::Speak(void* value)
{
long i = (long) value; // cast from pointer to long
cout<<"before lock"<<endl;
pthread_mutex_lock (&mutexsum);
cout << "Name: Kevin" << i << "\n" << "Seconds since epoch:" << "\nThread id:" << pthread_self() << endl;
pthread_mutex_unlock (&mutexsum);
}