我正在为我的程序编译单元测试(通过GoogleTests),每当我尝试使用Eigen 3.2.x在Solaris 11.3上以DEBUG模式编译时,我在运行程序时遇到此SIGSEGV错误然后进行核心转储在gdb
:
(gdb)r
...
[使用libthread_db启用的线程调试] [新线程1(LWP 1)]
编程接收信号SIGSEGV,分段故障。 [切换到 线程1(LWP 1)] 0x0830fc30 in Eigen :: internal :: ploadu( from = 0xfeffe5a0)at ./eigen/Eigen/src/Core/arch/SSE/Complex.h:307 307 { EIGEN_DEBUG_UNALIGNED_LOAD返回Packet1cd(ploadu((const 双*)从)); }
(GDB)
在from
中打印gdb
时,这就是我所得到的:
gdb p from:(const std :: complex< double> *)0xfeffe5a0
此SIGSEGV仅适用于Solaris,且仅在使用-Og
进行编译时才适用。我已在多个其他操作系统上编译和测试它,并且没有任何问题。这是一个已知的问题?它看起来与某些SSE优化和对齐有关,但是我无法确定究竟发生了什么。