我在本地环境中遇到EXEC_BAD_ACCESS
错误(Mac OS X 10.9.2、boost 1.55.0、mlpack 1.0.8、llvm 5.1 clang-503.0.38),我在一个非常简单的片段中缩小了错误范围:
#include "mlpack/methods/range_search/range_search.hpp"
int main(int argc, const char *argv[])
{
return 0;
}
g++ 版本是
iMac:build dongli$ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
并通过以下方式编译代码段
g++ -std=c++11 main.cpp -o main -lmlpack -I/usr/include/libxml2
(你可以改变你的情况)
在终端运行main
会给你
iMac:build dongli$ ./main
Bus error: 10
运行它lldb
会给你更多信息
iMac:build dongli$ lldb ./main
Current executable set to './main' (x86_64).
(lldb) r
Process 79449 launched: './main' (x86_64)
Process 79449 stopped
* thread #1: tid = 0xb4a75, 0x00000001000500eb libmlpack.1.0.dylib`long double boost::math::lanczos::lanczos17m64::lanczos_sum<long double>(long double const&) + 59, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x100001d80)
frame #0: 0x00000001000500eb libmlpack.1.0.dylib`long double boost::math::lanczos::lanczos17m64::lanczos_sum<long double>(long double const&) + 59
libmlpack.1.0.dylib`long double boost::math::lanczos::lanczos17m64::lanczos_sum<long double>(long double const&) + 59:
-> 0x1000500eb: fstpt (%rax)
0x1000500ed: fldt 0x26c8d(%rip) ; .memset_pattern99 + 1296
0x1000500f3: fstpt 0x10(%rax)
0x1000500f6: fldt 0x26c94(%rip) ; .memset_pattern99 + 1312
如您所见,它指向我boost::math::lanczos::lanczos17m64::lanczos_sum
,但我不知道是什么问题。
但是当-std=c++11
不存在时,不会发生错误。我也尝试boost
使用--c++11
by重新安装homebrew
。
提前致谢!
编辑:
我只安装了一个boost
:
iMac:~ dongli$ ls /usr/local/Cellar/boost/
1.55.0
用命令:
brew install boost --c++11