Я использую версию 3.12.10 Linux. Я пишу простой модуль, который просматривает список задач и проверяет использование стека каждым процессом, чтобы определить, не угрожает ли какой-либо из них переполнением стека. Чтобы получить ограничение стека процесса, который я использую:
tsk->signal->rlim[ RLIMIT_STACK ].rlim_cur
Чтобы получить адрес памяти для начала стека, я использую:
tsk->mm->start_stack
Затем я вычитаю из него результат этого макроса:
KSTK_ESP( tsk )
В большинстве случаев это работает нормально, но иногда возникает ситуация, когда процесс использует больше своего предела стека (обычно 8 МБ), но процесс продолжает работать, а сам Linux не сообщает о каких-либо выпуск.
У меня вопрос: я использую правильные переменные для проверки использования этого стека?