当在不同逻辑cpu上运行的同一进程的两个线程遇到seg错误时会发生什么?
答案 0 :(得分:4)
默认操作是让进程退出。如果您处理段错误,我想您可以尝试安排它发生终止的线程。但是,由于导致segfault自然发生的唯一因素(与raise
或kill
相反)源于未定义的行为,因此程序处于不确定的状态,您不能依赖于恢复任何东西。
答案 1 :(得分:3)
分段错误的正常处理涉及终止进程。这意味着它们都被终止了。
答案 2 :(得分:2)
我认为所有主要操作系统的默认操作都是终止进程。但是,您可以设想安装(例如使用signal
)仅终止线程的备用处理程序。当然,一旦出现分段错误,行为通常会变得不明确,并且尝试继续是有风险的。
答案 3 :(得分:1)
由于非法执行而生成的信号由内核同步处理。因此,即使两个线程同时产生seg故障,也只有一个线程通过'。
答案 4 :(得分:0)
为进程调用segfault处理程序。如果您没有做任何特殊操作,操作系统将终止该过程并回收其资源。