bfdhczw 发表于 2014-12-02 21:38

ARM,嵌入式Linux,内核栈溢出,如何定位?

目前内核栈大小是8KB,之前发现过有的内核模块申请超大的局部变量,如char aaa,导致内核栈溢出。

现在怀疑还有栈溢出的情况,但是不知道要如何定位,求定位办法,编译时和运行时的都可以。

Tinnal 发表于 2014-12-02 22:39

"Strong" stack protection for GCC
http://lwn.net/Articles/584225/

humjb_1983 发表于 2014-12-03 09:08

也可以自己打点追踪一下sp的位置

bfdhczw 发表于 2014-12-03 14:42

回复 2# Tinnal

好像toolchain不支持

使用-fstack-protector可以编译通过

但是使用-fstack-protector-all就会报错
undefined reference to __stack_chk_fail
undefined reference to __stack_chk_guard

gcc版本是4.6.4,所以不支持-fstack-protector-strong
gcc -v的输出中有--disable-libssp

bfdhczw 发表于 2014-12-03 14:47

回复 3# humjb_1983


    请教下,这个要怎么追踪,对底层的东西不是很熟。有没有相关链接,搜了下,没搜到?谢谢~

humjb_1983 发表于 2014-12-05 15:18

bfdhczw 发表于 2014-12-03 14:47 static/image/common/back.gif
回复 3# humjb_1983



具体我也没操作过,task_struct(或mm)中好像可以获取到sp的值,可以试试。。
页: [1]
查看完整版本: ARM,嵌入式Linux,内核栈溢出,如何定位?