0

Я отлаживаю дамп сбоя ядра. Кажется, проблема связана с тем, что один процесс пытался создать карту памяти нового региона. Проблема в том, что он не смог сохранить семафор памяти.Значение отрицательного счета rw_semaphore

Когда я просмотрел mm_struct процесса и распечатал его содержимое. Я видел, что struct rw_semaphore mmap_sem были такими, как показано ниже. Теперь, он имеет значение count, кажется подозрительным? Он имеет отрицательное значение, как если бы существовало условие гонки, когда после проверки на нуль он уменьшался дважды на два разных потока.

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

ответ

0

Извините за замешательство. Я думал, что авария тянет правильные типы данных и использует должным образом, когда распечатав все значения ...

Похоже утилита аварии не читать count член как int ....

При печати он как int, я получаю правильное значение.

crash> p (int) (((struct mm_struct *) 0xffff8801f15fa540)->mmap_sem).count 
$13 = 1 
Смежные вопросы