【发布时间】:2015-06-23 19:38:04
【问题描述】:
我的命令行工具不断抛出bus error: 10 消息。 Xcode 调试器显示EXC_BAD_ACCESS 消息并突出显示创建线程的函数调用。手动调试显示执行流在线程流内的随机位置中断。我尝试了另一个编译器(gcc),但结果相同。禁用 pthread_mutex_lock() 和 pthread_mutex_unlock() 没有帮助。我写了这个重现错误的小例子。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
typedef struct thread_args {
pthread_mutex_t* mutex;
} thread_args;
void* test(void* t_args) {
printf("Thread initiated\n");
thread_args* args = (thread_args* )t_args;
printf("Args casted\n");
pthread_mutex_lock(args->mutex);
printf("Mutex locked\n");
pthread_mutex_unlock(args->mutex);
printf("Mutex unlocked\n");
pthread_exit(NULL);
}
int main() {
pthread_mutex_t mutex1;
pthread_mutex_init(&mutex1, NULL);
thread_args args;
args.mutex = &mutex1;
pthread_t* thread;
printf("Initiating a thread\n");
pthread_create(thread, NULL, test, &args);
return(0);
}
【问题讨论】:
标签: c multithreading debugging pthreads