Детектор утечки памяти ядра - PullRequest
2 голосов
/ 19 апреля 2019

Я включил опцию «Детектор утечки памяти ядра» во взломе ядра и перестроил / перезагрузил систему, так как сейчас файл kmemleak существует в папке / sys / kernel / debug, но кажется, что я не могу запустить сканирование с помощью «echo»scan> / sys / kernel / debug / kmemleak ", я смонтировал debugfs в / sys / kernel / debug, но когда я пытаюсь запустить сканирование, он выдает" -bash: echo: write error: устройство или ресурс занят ".Я предполагаю, что это потому, что у меня нет разрешения на запись в папку / sys, даже если я являюсь пользователем root.Любое предложение, как решить эту проблему?Большое спасибо.

Я пробовал

1 Ответ

2 голосов
/ 21 апреля 2019

Вам нужно проверить несколько вещей при использовании kmemleak.

Проверьте, передается ли какой-либо загрузочный параметр или параметр командной строки kmemleak=off.

В вашем загрузочном журнале проверьте, есть ли у вас какие-либо журналы, связанные с kmemleak, особенно что-то вроде ниже журналов

kmemleak: Kernel memory leak detector disabled
kmemleak: Early log buffer exceeded (919), please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE

Скорее всего, я думаю, вам нужно настроить CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE. Если во время загрузки размер журнала для kmemleak превышает предел, установленный в конфигурации ядра Linux, kmemleak отключается.

Итак, настройте CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE и увеличьте размер. Эта опция также находится под kernel hacking. Я использую исходный код ядра 4.19.9 и прилагаю скриншот для справки. Maximum kmemleak early log entries - это поле, вам может потребоваться установить более высокое значение (например, 4096).

enter image description here

...