我想使用pthread_kill api从主线程向子线程发送信号(SIGUSR1),但它给出了分段错误。以前我使用2.6.20内核版本和gcc 4.2.1 eglbc 2.5 multilib powerpc tolchain。那时它正在正常工作。现在我正在使用带有gcc 4.1.2 elibc 2.5.78 nptl(本地posix线程库)的2.6.34内核版本。在这里,我遇到了细分错误。
我还阅读了pthread_kill()的手册页,因为“ POSIX表示尝试使用生命周期已结束的线程ID会产生未定义的行为,并尝试在调用pthread_kill()时使用无效的线程ID可能会导致细分错误。”
我认为线程ID初始化应该是正确的或其他我找不到的东西。有人可以帮忙解决这个问题吗?
答案 0 :(得分:1)
有一些可能的原因:
首先,您可以通过打印创建的线程的ID以及传递给pthread_kill()的ID进行验证
接下来,您必须找出线程何时结束。
最后,很难找到此类错误,也没有一般建议。