一个线程中的崩溃如何影响其他线程。

时间:2016-12-26 12:18:41

标签: android c multithreading linux-device-driver system-calls

我有一个包含2个帖子的程序。

  • Thread1:在IOCTL调用中(与驱动程序交互)
  • 线程2:做SIGSEGV来的其他事情。

在这种情况下,Thread1完成ioctl调用的执行还是在执行内核代码之间停止了线程?

如果可能的话,请在Windows,linux和android上下文中提供答案(调试器附加到使用ptrace创建墓碑的过程中)。

1 个答案:

答案 0 :(得分:1)

Linux的答案:我假设该过程将作为处理SIGSEGV的线程2的一部分而终止。在Linux中,线程在内核模式下通常不能正常终止,尽管系统调用代码可能(例如,如果它处于所谓的可中断等待中)通知进程终止并提前退出。线程1一旦返回就会终止。

从开发的角度来看,我并不熟悉Android,但我的理解是,进程为许多信号设置了处理程序,这些信号唤醒了调试器守护程序,后者依次附加到使用ptrace处理信号的进程并转储各种过程状态的位。我希望在线程1从系统调用返回之前能够发生这种情况。