PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] Exit code为139(segmentation violation)
楼主:
BIAO
(超越自己)
2014-05-05 20:53:03
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux C
作者:
testPtt
(测试)
2014-05-05 21:06:00
检查malloc,free
作者:
kkkmode
(kkk)
2014-05-05 22:57:00
105行=> write(sock, "Error Code1", 10);是不是要改成11? 我不知道这会不会有影响...
楼主:
BIAO
(超越自己)
2014-05-06 12:58:00
谢谢k大的指错..应该是12
作者: yvb
2014-05-06 15:53:00
先看看 info_insert() 和 cost_power() 最后是不是少了什么事.新版的做过头, 两函式中的 res 反而是多做的事了 XD
楼主:
BIAO
(超越自己)
2014-05-06 16:55:00
不好意思,新版已更正上传!!不过换valgrind跑很慢了.. 迟迟跑不出结果!按了ctrl+C后,只出现2个错误.. XD
作者:
LPH66
(-6.2598534e+18f)
2014-05-07 00:12:00
valgrind 慢是正常的, 一般平均会慢个数倍至十数倍
作者:
Killercat
(杀人猫™)
2014-05-07 07:29:00
139其实就是所谓的万用错误sig 11吧你的code有stack堆积的问题吗?在某些特殊情况下stack炸掉是回sig 11(不过我忘了其他情况回的是啥)
作者: yvb
2014-05-07 13:23:00
sig 11 => SIGSEGV, SEGV => segmentation violation. 见标题.去 wikipedia 查一下, 会有相关说明.
作者:
Killercat
(杀人猫™)
2014-05-07 17:31:00
我不认为查Sig11有帮助。这错误其实含扩大多数内存读写的疑难杂症(所以我才说叫做万用错误 因为大概错误里面95%都会丢Sig.11). 这范围太大了,不过我还是建议看一下是不是stack炸掉,这是少数valgrind看不出的问题
作者: yvb
2014-05-07 18:26:00
楼上所述 stack炸掉 是指 stack overflow 或是什么?原PO有附程式码,要不要帮忙看看,哪里可能发生怎样的问题?若是 stack overflow 而 segfault, 我使用valgrind测试的结果,会得到一句 Stack overflow in... can't grow stack... 的讯息上述测试使用 ubuntu 12.04.2 LTS, valgrind-3.7.0 .
楼主:
BIAO
(超越自己)
2014-05-08 02:19:00
谢谢y大和K大的热心协助,目前我已将原程式和执行绪有关的部份都先拿掉了,打算用core dump搭配gdb看看结果,今日下午会再将精简的程式码附上,并将测试结果PO上来,谢谢大家:D
作者:
Killercat
(杀人猫™)
2014-05-08 09:19:00
那就是stack炸掉没错。简单的说,最常见的原因是local变量开太多 超出stack的范围。另外还有一个隐含的可能性就是滥用alloc()。我很乐意帮忙debug 但是我现在手边没linux机器 XD... 只能从大家的feedback, code跟sig 11去猜是不是stack用尽造成overflow而已喔你是刻意产生stack overflow去看结果喔 我误会了 =P发现少打一个字...是alloca()
作者: yvb
2014-05-08 13:41:00
看到原PO上一段的推文, 忽然想到 mysql client library 也可能不是编成thread-safe. 可以试着叫用 mysql_thread_safe() 看看当然原PO程式很多error-handling都没做完整,也可能因此出问题.另外gdb也是可以处理thread.之前若有core dump情况又是如何?
楼主:
BIAO
(超越自己)
2014-05-08 17:34:00
之前的程式没有用core dump,并不晓得结果 XDK大您好,local变量设定太多!? 不过函数内的变量用完不是就释放了嘛...以小弟的程式来说..local变量数量应当是还行吧!? 不过我也的确不晓得stack的容量应该不能超过多少XD
作者:
EdisonX
(卡卡兽)
2014-05-09 00:04:00
stack上限容量可以用编译器设定,一般默认大概是1~20MB左右
楼主:
BIAO
(超越自己)
2014-05-09 18:22:00
谢谢E大 明白了 :D
作者:
sunneo
(艾斯寇德)
2014-05-10 22:07:00
执行过一段时间,可能是too many file, 或 no memory
楼主:
BIAO
(超越自己)
2014-05-12 15:16:00
谢谢大家,问题已找到,估计是程式逻辑不好。没做例外处理。^^
作者: yvb
2014-05-12 20:59:00
前面我有提到error-handling不完整.正想问你debug的情况如何:P
继续阅读
Re: [问题] ITSA第24次第4题
soheadsome
Re: [问题] 30 ITSA-Problem2.图形简单性质
ACMANIAC
[问题] 30 ITSA-Problem2.图形简单性质
unknown
[问题] const vector 和 const_iterator的问题
pipi74319
Re: [问题] ITSA第24次第4题
ACMANIAC
[问题] CUDA 座标求算距离问题(已解决)
okokokla2001
Re: [问题] ITSA第24次第4题
kkkmode
[问题] 读档问题 c语言
solinari
Re: [问题] MFC基础学习
Ting1024
[问题] ITSA第24次第4题
ga544523
Links
booklink
Contact Us: admin [ a t ] ucptt.com