我正在使用pthread_create從共享庫中使用函數。我收到Segmenation故障下面的代碼執行後:pthread_create中的分段錯誤
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include<string.h>
#include<pthread.h>
#include<unistd.h>
void (*GetVersion)(char *version);
void* draw(void *arg)
{
void *handle;
char *error;
handle = dlopen ("libOpenKaillera.so", RTLD_LAZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}
GetVersion = dlsym(handle, "GetVersion");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
char version[4];
kailleraGetVersion(version);
puts(version);
dlclose(handle);
return NULL;
}
int main(void)
{
pthread_t tid;
pthread_create(&tid, NULL, &draw, NULL);
sleep(5000);
return 0;
}
回溯命令說以下內容:
#0 0xb68e7be0 in ??()
#1 0xb7fa9d56 in __nptl_deallocate_tsd() at pthread_create.c:158
#2 0xb7fa9f83 in start_thread (arg=0xb7df0b40) at pthread_create.c:325
#3 0xb7ede4ce in clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:129
我不明白什麼原因可能導致此。你能幫我嗎?
甚至沒有回溯,不,我們不可能幫助你。你有沒有看過調試器呢? – bmargulies 2014-10-10 21:14:18
我在問題 – spandei 2014-10-10 21:46:09
中添加了回溯輸出你用什麼編譯和鏈接選項? – bmargulies 2014-10-11 00:55:02