我编译了一个简单的pthread_create程序,并在ARMv7目标(cortex a9 CPU)上的NetBSD5.1中执行相同的程序。
程序sigfaults。相同的pthread程序在另一台PC上运行没有任何问题。
以下是示例程序
void *PrintHello(void *threadid){
long tid, i;
tid = (long)threadid;
for (i=0; i<PRINT_REPEAT; i++) {
printf("Hello World! It's me, thread #%ld!\n", tid);
};
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
int t;
printf("PrintHello is %p\r\n",(void *)PrintHello);
for(t=0; t<NUM_THREADS; t++){
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
}
}
pthread_exit(NULL);
}
任何关于此的指示都会非常有帮助。我发现在执行程序时会引发data_abort_handler异常。