程序收到信号SIGILL,非法指令

我正在使用Linux x86_64机器来构build我的程序。 我已经将共享库链接到可执行文件。 在我的项目中,我正在调用一个已经在函数内部声明了vector<string>的函数。 该函数被调用时,我的程序被杀死。 通过下面的GDB进行debugging是我得到的输出。

 Program received signal SIGILL, Illegal instruction. 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87 87 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) (gdb) bt 0 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87 

这是我的共享库的编译问题? 把我的头绷得够紧。 请帮忙。

-Chaks

为查询添加更多信息:是的,我调用的函数File_ToText是OC_Catalog_c类中的一个虚函数。 其他类的成员variables具有OC_Catalog_c类的对象,该对象也具有虚函数File_ToText。使用该对象,我从虚函数File_ToText调用OC_Catlog_c的File_ToText函数。 我将显示一个代码片段:

 class Oc_Catalog_c { virtual vector<string> File_ToText (void) const; } class B { const OC_Catalog_c* m_pCatalog; virtual vector<string> File_ToText (void) const; } vector<string> B::File_ToText( void ) const { vector<string> a_SubData; a_SubData = m_pCatalog->File_ToText(); } 

谢谢你们的帮助。 我终于找出了导致这个错误的问题。
调试更多,并跟踪指令,我发现程序在ud2a指令失败。
我忽略了一个警告“警告:不能通过'…'传递非POD类型的struct sqlrw_request_cb'对象;调用将在运行时中止”。
解决这些警告解决了与SIGILL有关的问题。
关于这个链接的更多解释: 引起SIGILL的ud2a指令