1
我試圖創建一個使用swapcontext()一個簡單的Hello World例子swapcontext()分段錯誤
這裏是代碼片段:
#include <ucontext.h>
#include <stdio.h>
#include <stdlib.h>
static ucontext_t uctx_main, uctx_func1;
typedef struct test_struct
{
ucontext_t context;
int value;
}test_struct;
test_struct* array[10];
static void
func1(void)
{
printf("func1: started\n");
printf("func1: TESTING\n");
printf("func1: returning\n");
}
void init()
{
memset(array,NULL,10);
array[0] = (test_struct*)malloc(sizeof(test_struct));
array[0]->value = 10;
getcontext(&array[0]->context);
char* func1_stack = (char*)malloc(sizeof(char)*64);
//char func1_stack[64];
array[0]->context.uc_stack.ss_sp = func1_stack;
array[0]->context.uc_stack.ss_size = 64;
array[0]->context.uc_link = &uctx_main;
makecontext(&array[0]->context, func1, 0);
}
int main(int argc, char *argv[])
{
init();
printf("VALUE: %d\n",array[0]->value);
swapcontext(&uctx_main, &array[0]->context);
printf("VALUE: %d\n",array[0]->value);
printf("main: exiting\n");
exit(0);
}
但問題是,當編程'執行swapcontext()
分割發生故障。我已經弄清楚了一點,我發現問題在於我分配給上下文的堆棧大小,但是我不知道我在做什麼錯誤。
P.S.我曾嘗試分配sizeof(func1_stack)
但仍然有段故障
任何人都可以給我一個提示嗎?
看來堆棧大小對我來說是個問題,謝謝 – 2012-10-17 17:08:37