作者hn12404988 (Willy)
看板C_and_CPP
标题[问题] 记忆体segfault问题
时间Fri Feb 24 16:32:24 2017
开发平台(Platform): Linux
编译器: GCC, g++
额外使用到的函数库(Library Used): std::thread, valgrind
程式码:
出问题的是出在这行:
https://github.com/hn12404988/dalahast/blob/master/dalahast/tool/ss_tool.cpp#L257
程式码都还没下注解,很乱,建议直接听我下面描述就好
如果真的要看程式码的话,以下是thread流程
先这个程式被呼叫
https://github.com/hn12404988/dalahast/blob/master/server/topology/init.cpp#L115
呼叫到这行
https://github.com/hn12404988/dalahast/blob/master/dalahast/tool/iss_tool.cpp#L172
再呼叫到上面出问题的那行
问题(Question):
有一个程式,其中一段是std::map使用operator[] 来创立记忆体
会segfault,但系统不会显示,而是直接挂掉,要再去/var/log/message才看到
更奇怪的是如果使用valgrind来启动:valgrind --leak-check=yes --log-file=vglog
程式就会顺利执行,std::map就会顺利完成
另外虽然这是multi-thread环境,但该std::map确定只会由自己thread使用
所以看来看去,就只是一段简单的map[]而已,就算换成map.emplace问题也是一样
请问大家有甚麽想法让我debug有新的方向吗?
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.16.181
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1487925152.A.374.html
1F:→ hn12404988: 不好意思,感觉好像来乱的,问题我刚刚发现在哪了 02/24 17:18
2F:→ hn12404988: 基本上就是太贪心,pointer被移来移去,出现nullptr 02/24 17:20
3F:→ hn12404988: 自己没注意到 02/24 17:20
4F:推 ilms49898723: 有补上结果给推 02/25 08:52