0

カーネルクラッシュダンプをデバッグしています。 1つのプロセスが新しい領域をマップするのに問題があるようです。問題は、メモリマップセマフォを保持できないことです。rw_semaphoreの負のカウント値

私はプロセスのmm_structを調べ、その内容を印刷しました。私はstruct rw_semaphore mmap_semが下記の通りであることを知りました。今、彼はcountの価値が疑わしいと思われますか?あたかも0をチェックした後に2つの異なるスレッドによって2回減分された競合状態があるかのように、負の値を持ちます。

mmap_sem = { 
    count = -4294967295, 
    wait_lock = { 
     { 
     rlock = { 
      raw_lock = { 
      slock = 262148 
      } 
     } 
     } 
    }, 
    wait_list = { 
     next = 0xffff8801f0113e48, 
     prev = 0xffff8801f0113e48 
    } 
    }, 

答えて

0

ご迷惑をおかけして申し訳ありません。私は、クラッシュが正しいデータ型を引っ張ると、クラッシュユーティリティはintとしてcountメンバーを読まないようにすべての値をプリントアウトし、適切...

が見えることを使用して思った....

私は印刷するときそれはintとして、私は正しい値を取得します。

crash> p (int) (((struct mm_struct *) 0xffff8801f15fa540)->mmap_sem).count 
$13 = 1