スレッドの作成中に pthread_mutex_attr をパラメーターとして指定すると問題が発生します。属性をNULLとして渡すと正常に動作しますが、この NULL は望ましくありません。
ここにコードを投稿しています。間違いを修正して物事を学ぶのを手伝ってください。
pthread_mutex_t thread_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_t thread1;
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&thread_mutex, &attr);
ret = pthread_create(&thread1, NULL, my_func, (void *)message);
pthread_mutexattr_destroy(&attr);
pthread_mutex_destroy(&thread_mutex);
pthread_exit(NULL);
このように attr を渡すと
ret = pthread_create(&thread1,&attr,upload_data,(void *)メッセージ);
これにより、セグメンテーション違反が発生しています。