有关多线程和段错误的问题

时间:2010-08-30 21:55:08

标签: c multithreading

当在不同逻辑cpu上运行的同一进程的两个线程遇到seg错误时会发生什么?

5 个答案:

答案 0 :(得分:4)

默认操作是让进程退出。如果您处理段错误,我想您可以尝试安排它发生终止的线程。但是,由于导致segfault自然发生的唯一因素(与raisekill相反)源于未定义的行为,因此程序处于不确定的状态,您不能依赖于恢复任何东西。

答案 1 :(得分:3)

分段错误的正常处理涉及终止进程。这意味着它们都被终止了。

答案 2 :(得分:2)

我认为所有主要操作系统的默认操作都是终止进程。但是,您可以设想安装(例如使用signal)仅终止线程的备用处理程序。当然,一旦出现分段错误,行为通常会变得不明确,并且尝试继续是有风险的。

答案 3 :(得分:1)

由于非法执行而生成的信号由内核同步处理。因此,即使两个线程同时产生seg故障,也只有一个线程通过'。

答案 4 :(得分:0)

为进程调用segfault处理程序。如果您没有做任何特殊操作,操作系统将终止该过程并回收其资源。

相关问题