Sigsegv 在针对 arm 架构重新编译时
Sigsegv when recompiled for arm architecture
我试图找出我在c ++ poco代码中犯了错误的地方。在 Ubuntu 14 上运行它时,程序运行正常,但是当通过 gnueabi 为手臂重新编译时,它只是崩溃并带有 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 这里是完整日志
谢谢
不知道为什么,这在 ubuntu 上编译得很糟糕,但是当在 Fedora 上编译时(相同的脚本、相同的构建设置、相同的 GNU),它正在工作。
谢谢你们的评论。
相关文章:
- 使用 MINGW gcc 编译时,不会为 std::string 调用重载的新运算符
- 如何编译:Mac上的Synergy(2017年的新工具链)
- 如何编译和运行一个新的 C++ Actor 框架项目?
- C++编译新的警告过滤器
- 每次都构建(make)lib,只有在lib较新时才重新编译项目
- 如何创建指向派生类的新指针,该派生类在C++编译时未知
- 如何在不退出和失去断点的情况下重新加载重新编译的二进制文件
- 在编译时将整数和分数部分宏组合成一个新的宏或双精度
- C++运算符新重载、编译错误
- 在新OSX上编译旧碳应用
- 代码块在尝试编译或创建新文件时出现"An assertion failed!"错误
- 在新的Visual Studio项目中包含任何Eigen 3.3.1文件将无法编译
- RCpp:如何在不重新启动R的情况下重新加载重新编译的C++代码
- 新安装的MinGW问题与编译和可执行文件
- 重新编译二进制类或派生类,以便在基类中添加新方法
- 添加新库以编译任何术语.如何编辑生成文件
- C++,如果其他新文件出现问题,使用g++进行编译可以很好地工作
- 每次添加新的源子文件夹时,Cmake都会重新编译所有内容
- 不完整类型的新内容在包装在模板中时编译
- 使用新的 Qt5 信号/插槽机制连接 QTcpSocket::error() 时编译错误