Я отлаживаю дамп сбоя ядра. Кажется, проблема связана с тем, что один процесс пытался создать карту памяти нового региона. Проблема в том, что он не смог сохранить семафор памяти.Значение отрицательного счета 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
}
},