boost:asio和dlclose()-核心转储(非法指令)

| 我在Aix 5.3和gcc 4.2.4上有application.so。 Application.so使用boost:asio。有example.c为application.so执行dlopen和dlclose。但是,当example.c退出时-我得到了一个核心转储。请注意,所有操作均已成功执行。 如果我在application.so中注释掉与boost相关的代码,并且在构建application.so时仍链接boost_system.so,则在example.c退出时仍会得到核心转储。但是,如果在构建application.so时未链接boost_system.so,则在example.c退出时不会得到任何核心转储。 我已经尝试了boost_1_40,boost_1_42,boost_1_45和gcc 4.2.0。有人看过这个问题吗?如果是,任何帮助将不胜感激。
{
hLib = dlopen(libPath, RTLD_LAZY | RTLD_GLOBAL);
fprintf(stderr, \"Before dlclose\");
dlclose(hLib);
}
上面的段是发生问题的地方。 example.c退出后,我立即获得核心转储。 编辑 使用boost-system构建application.so时,出现以下警告:-
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::error_info_injector<boost::system::system_error>::~error_info_injector
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::~clone_impl()
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::~clone_impl()
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::clone() const
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::rethrow() const
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::error_info_injector<boost::system::system_error>::~error_info_injector::system_error> >::~clone_impl()
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system:
ld: 0711-224 WARNING: Duplicate symbol: .non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >::~clone_impl()
ld: 0711-224 WARNING: Duplicate symbol: .global destructors keyed to ras_arg_t
ld: 0711-224 WARNING: Duplicate symbol: .global constructors keyed to ras_arg_t
我假设这些重复的析构函数不是在dlclose期间而是在退出期间被调用-到那时库被卸载。     
已邀请:
我没有使用boost,而是使用了AIX 5.3-5和gcc 4.2.0,并且遇到了核心转储和
\"ld: 0711-224 WARNING: Duplicate symbol: .global constructors keyed to ras_arg_t\"
链接警告。 我的问题的答案是在
/usr/include/sys/ras.h
ras_arg
结构定义之前添加单词
typedef
这类似于此处描述的“ 15”情况: http://www.ibm.com/developerworks/forums/thread.jspa?threadID=119546     

要回复问题请先登录注册