【发布时间】:2012-02-20 17:55:23
【问题描述】:
我遇到了克隆函数的问题,因为它在第 9 次调用后给我一个分段错误。程序运行良好,直到我使用 9 个以上的线程。
这是我要克隆的电话:
void **child_stack = (void **) malloc(SIGSTKSZ);
clone (func,
(child_stack + SIGSTKSZ),
CLONE_VM | CLONE_FILES | CLONE_PARENT_SETTID,
(void *) argsForFunc,
&pid);
我使用的是克隆,而不是任何更高级别的线程库,例如 pthreads。
如果有帮助,这是我在使用 GDB 时遇到的错误:
Program received signal SIGSEGV, Segmentation fault.
clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:66
66 movq %rcx,8(%rsi)
Current language: auto; currently asm
【问题讨论】:
-
为什么是 void** child_stack,而不仅仅是 void* child_stack?
-
为什么要使用
clone而不是pthreads 或其他线程库?
标签: c linux segmentation-fault clone