Sigsegv重新编译为arm架构时

时间:2015-01-20 13:25:58

标签: c++ network-programming arm poco

我试图找出我在c ++ poco 代码中出错的地方。在Ubuntu 14上运行时,程序运行正常,但是当通过 gnueabi 重新编译 arm 时,它只是与sigsegv崩溃:

这是来自堆栈跟踪的报告(它落在哪里):

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.2.101")}, 16) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x6502a8c4} ---
+++ killed by SIGSEGV +++

这是代码(它应该连接到tcp服务器):

this->address = SocketAddress(this->host, (uint16_t)this->port);
this->socket = StreamSocket(this->address); // !HERE

请注意,我正在捕捉任何异常(例如econnrefused),并且当它无法连接时它会正常死亡。当它连接到服务器端时,它就会崩溃。

当尝试启动valgrind时,它会因错误而中止。不知道影子记忆范围是什么意思

==4929== Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING.

http://pastebin.com/Ky4RynQc这里是完整日志

谢谢

1 个答案:

答案 0 :(得分:0)

不知道为什么,这在ubuntu上编译得很糟糕,但是当在fedora上编译时(相同的脚本,相同的构建设置,相同的gnu),它正在工作。

谢谢你们的评论。