求助,多线程程序遇到段错误

1 view
Skip to first unread message

崔磊

unread,
Sep 20, 2010, 4:56:06 AM9/20/10
to linux-...@zh-kernel.org
我在调试一个多线程程序时遇到了个段错误,发生在函数调用返回之时,gdb调试显示如下:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208542320 (LWP 13532)]
0x00000000 in ?? ()

进一步调试发现是保存EIP的地址被清零。
我头次遇到这种问题,请大家帮忙给点提示,一般会是什么原因造成的呢?我想知道当先线程默认分配的栈大小,该如何做呢?我用查pthread_attr__getstacksize()获取到显示是1M,我感觉应该没这么大吧。
2010-09-20



崔磊
---------------------------------------------------------
一键发送本地文件,请用网易闪电邮(fm.163.com)!
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org

曾俊

unread,
Sep 20, 2010, 5:22:24 AM9/20/10
to 崔磊, linux-...@zh-kernel.org
数组越界的可能性比较大;
先检查一下这个函数中分配在栈上的变量,可能是数组或者结构体,写操作越界,覆盖了EIP。

-----邮件原件-----
发件人: linux-kern...@zh-kernel.org [mailto:linux-kern...@zh-kernel.org] 代表 崔磊
发送时间: 2010年9月20日 16:56
收件人: linux-...@zh-kernel.org
主题: 求助,多线程程序遇到段错误

Songmao Tian

unread,
Sep 20, 2010, 5:40:38 AM9/20/10
to 崔磊, linux-...@zh-kernel.org
像是函数指针没赋值,调到null这个函数中去了

Songmao Tian

unread,
Sep 20, 2010, 5:40:56 AM9/20/10
to 崔磊, linux-...@zh-kernel.org
backtrace看看
Reply all
Reply to author
Forward
0 new messages