[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: deadlock on ptrace



斉藤@densanと言います。

> 以下の症状は、皆さんのところでは、起こっていないでしょうか。
> 何かアドバイスいただけると幸いです。
> 
> gdbでプログラムをデバッグしている時の話ですが、
> runを何回か繰り返しているとシステムが止まってしまいます。

pmap_page_protect()はあちこちから呼ばれていて、
この関数以降で対策するのは難しそうなので、
呼出元の sys/uvm/uvm_fault.c のuvm_fault()で対策してみました。

  1681              /*
  1682               * promote to shared amap?  make sure all sharing
  1683               * procs see it
  1684               */
  1685              if ((amap_flags(amap) & AMAP_SHARED) != 0) {
  1686                  pmap_page_protect(uobjpage, VM_PROT_NONE);
  1687              }

を

  1681              /*
  1682               * promote to shared amap?  make sure all sharing
  1683               * procs see it
  1684               */
  1685              if ((amap_flags(amap) & AMAP_SHARED) != 0) {
  1686                  if (ufi.map == kernel_map)
  1687                      vm_map_unlock_read(ufi.map);
  1688                  pmap_page_protect(uobjpage, VM_PROT_NONE);
  1689                  if (ufi.map == kernel_map)
  1690                      vm_map_lock_read(ufi.map);
  1691              }

のように直してテストしてみました。
今のところ症状は出なくなりました。

他のマシンで症状が出ていないとすれば、私のシステム固有の問題かも知れません。