Martins3/loongson-dune

kill10 failed

Closed this issue · 3 comments

因为 child 在创建出来虚拟机之前就会收到信号,在模拟的 fork 返回的位置,信号处理函数正确执行,之后模拟并没有这个信号的干扰。

似乎仅仅是在 dup_vm 中间增加一个 printf 就会导致成功的概率剧烈变化(0% ->90%)

  • 从内核的那一侧进行检查一下
  • 是不是因为竞争的原因
  • 为什么就是哪一个无法创建新的 VM,之后的 child 都可以创建

好消息 : 失败的原因都是相同的,无法创建新的 VM

  Info: KVM_CREATE_VM
  Info: KVM_CREATE_VCPU
parent pid 4245
parent after fork
parent pid 4245
parent after fork
parent exit
child [4249] get the signal
  Fatal: KVM_CREATE_VM
child [4248] get the signal
  Info: KVM_CREATE_VM
  Info: KVM_CREATE_VCPU
child work finished

do_mmu_notifier_register => mm_take_all_locks => signal_pending