Ich habe das Mutex-Problem etwas näher analysiert und es wird immer seltsamer. Es liegt offenbar daran, dass ich eine Variable vom Typ pthread_mutex_t verwende, die Teil einer Struktur ist! Rufe ich die Funktion pthread_mutex_init nicht wie oben mem->mutex_sock auf, sondenr lege mir eine lokale Valiable
pthread_mutex_t mutex_sock
an, die ich zum Initialisieren verwende, dann klappt alles problemlos. Das gleiche Spiel habe ich auch bei pthread_mutex_(un)_lock(), auch hier muss ich aus meiner Struktur jeweils erst in eine lokale Variable kopieren, damit es klappt.
Unions oder ähnliches sind nicht in der Nähe, so dass ich mir dieses Verhalten so gar nicht erklären kann. Auch läuft der gleiche Code unter Linux problemlos, so dass es auch kein kaputter Pointer sein kann...