【发布时间】:2018-12-11 23:21:23
【问题描述】:
我使用的是 3.12.10 版的 Linux。我正在编写一个简单的模块,它遍历任务列表并检查每个进程的堆栈使用情况,以查看是否有任何堆栈溢出的危险。要获取我使用的进程的堆栈限制:
tsk->signal->rlim[ RLIMIT_STACK ].rlim_cur
要获取我使用的堆栈开头的内存地址:
tsk->mm->start_stack
然后我从中减去这个宏的结果:
KSTK_ESP( tsk )
大多数时候这似乎工作得很好,但有时我会遇到一个进程使用超过其堆栈限制(通常为 8 MB)的情况,但该进程继续运行并且 Linux 本身没有报告任何类型的问题。
我的问题是,我是否使用正确的变量来检查此堆栈使用情况?
【问题讨论】:
标签: linux-kernel stack