这几天在调试服务器程序,通过pthread_kill给接收线程对象发信号处理,发现程序运行到pthread_kill处失败,调用打印堆栈信息如下
可以断定程序运行到红色部分失败了,这说明确实调用pthread_kill 后程序崩溃,而且是在pthread_kill 内部,
这个是什么原因呢,我们来看下如下的信号测试程序,如下程序在ubuntu 11.10上测试执行通过:
g++ sigwait_test.cpp -lpthread
程序执行1小时未发现异常,那么这个Segmentation fault是怎么产生的呢,
while(1)
{
printf("hello\n");
//sleep(1);
pthread_kill(8888, SIGRTMIN);
}