看起来我的内核模块在重负载下执行了一些堆栈粉碎。我可以为内核模块使用 -fstack-check 编译选项吗?似乎该编译选项会导致编译器发出额外的代码,但不会链接到库或运行时。那是对的吗?
我有一个非常简化的内核,它做的不多。我可以在启用和不启用 slub 调试的情况下加载那个简单的内核,并且它也会在编译时加载和不加载 -fstack-check。当我开始测试我的模块时,当我使用 -fstack-check 编译选项时它开始崩溃,而仅使用 slub 调试似乎不会引发错误。
另一个问题(gcc 选项 -fstack-check 究竟如何工作?)提供了一些信息,但我无法找到在内核模块编译中使用 -fstack-check 选项的人的示例。