3.10的内核, 在子进程退出的时候,发送信号通知父进程,此时是持有父进程的sighand中的spinlock的,然后父进程和该子进程不在一个核上,发送ipi的reschedule中断给对应的核, 但是,由于信号其实是异步机制,在没有发送ipi之前,对应的接收进程已经在处理信号, 处理信号的过程中,又需要拿自己对应task_struct中的sighand里面的spinlock,导致了死锁. 那么,为什么子进程发送ipi需要这么久呢?按道理不是发送完ipi中断不就可以释放锁了么? 调用链为:kic…