免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2527 | 回复: 2
打印 上一主题 下一主题

[C++] 求教高手帮忙看个coredump, c++11, gcc [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-04 10:45 |只看该作者 |倒序浏览
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fffd9d83000
Core was generated by `./EP_game_server --serverid=001'.
Program terminated with signal 6, Aborted.
#0  0x0000003d4ee2ffc5 in raise () from /lib64/libc.so.6
warning: File "/usr/local/lib64/libstdc++.so.6.0.18-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
        add-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.18-gdb.py
line to your configuration file "/root/.gdbinit".
To completely disable this security protection add
        set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
        info "(gdb)Auto-loading safe path"
(gdb) bt
#0  0x0000003d4ee2ffc5 in raise () from /lib64/libc.so.6
#1  0x0000003d4ee31a70 in abort () from /lib64/libc.so.6
#2  0x00002b3f2ed00af5 in __gnu_cxx::__verbose_terminate_handler () at ../../../../gcc-4.8.2/libstdc++-v3/libsupc++/vterminate.cc:95
#3  0x00002b3f2ecfec66 in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../gcc-4.8.2/libstdc++-v3/libsupc++/eh_terminate.cc:38
#4  0x00002b3f2ecfec93 in std::terminate () at ../../../../gcc-4.8.2/libstdc++-v3/libsupc++/eh_terminate.cc:48
#5  0x00002b3f2ecfef06 in __cxxabiv1::__cxa_rethrow () at ../../../../gcc-4.8.2/libstdc++-v3/libsupc++/eh_throw.cc:122
#6  0x0000000000e3b62b in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<client_session, std::allocator<client_session>, raw_ptr<work_service>, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > > >(std::_Sp_make_shared_tag, client_session*, std::allocator<client_session> const&, raw_ptr<work_service>&&, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >&&) (this=0x2b3f375f3b28, __a=...)
    at /usr/local/include/c++/4.8.2/bits/shared_ptr_base.h:509
#7  0x0000000000e3b4cd in std::__shared_ptr<client_session, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<client_session>, raw_ptr<work_service>, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > > >(std::_Sp_make_shared_tag, std::allocator<client_session> const&, raw_ptr<work_service>&&, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >&&) (this=0x2b3f375f3b20, __tag=..., __a=...) at /usr/local/include/c++/4.8.2/bits/shared_ptr_base.h:957
#8  0x0000000000e3b45c in std::shared_ptr<client_session>::shared_ptr<std::allocator<client_session>, raw_ptr<work_service>, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > > >(std::_Sp_make_shared_tag, std::allocator<client_session> const&, raw_ptr<work_service>&&, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >&&) (this=0x2b3f375f3b20, __tag=..., __a=...) at /usr/local/include/c++/4.8.2/bits/shared_ptr.h:316
#9  0x0000000000e3b38a in std::allocate_shared<client_session, std::allocator<client_session>, raw_ptr<work_service>, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > > >(std::allocator<client_session> const&, raw_ptr<work_service>&&, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > >&&) (__a=...) at /usr/local/include/c++/4.8.2/bits/shared_ptr.h:598
#10 0x0000000000e3b293 in std::make_shared<client_session<raw_ptr<work_service>, std::unique_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, std::default_delete<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > > > > > () at /usr/local/include/c++/4.8.2/bits/shared_ptr.h:614
#11 0x0000000000e3af8c in game_server::create_session (this=0x7fffd9d381f0, socket=...) at /root/aoshi_server/EP_game_server/game_server.cpp:21
#12 0x0000000000fe6e1e in server::__lambda0::operator() (__closure=0x2b3f375f3d30, ec=...) at /root/aoshi_server/network/server.cpp:33
#13 0x0000000000fe7db6 in boost::asio::detail::binder1<server::do_accept()::__lambda0, boost::system::error_code>::operator()(void) (this=0x2b3f375f3d30)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/bind_handler.hpp:47
#14 0x0000000000fe7c6e in boost::asio::asio_handler_invoke<boost::asio::detail::binder1<server::do_accept()::__lambda0, boost::system::error_code> >(boost::asio::detail::binder1<server::do_accept()::__lambda0, boost::system::error_code> &, ...) (function=...) at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/handler_invoke_hook.hpp:69
#15 0x0000000000fe7b5c in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<server::do_accept()::__lambda0, boost::system::error_code>, server::do_accept()::__lambda0>(boost::asio::detail::binder1<server::do_accept()::__lambda0, boost::system::error_code> &, server::__lambda0 &) (function=..., context=...) at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#16 0x0000000000fe79a1 in boost::asio::detail::reactive_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::ip::tcp, server::do_accept()::__lambda0>::do_complete(boost::asio::detail::io_service_impl *, boost::asio::detail::operation *, const boost::system::error_code &, std::size_t) (owner=0x1cc2e100, base=0x2b3f40270870)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/reactive_socket_accept_op.hpp:123
#17 0x0000000000c77c8a in boost::asio::detail::task_io_service_operation::complete (this=0x2b3f40270870, owner=..., ec=..., bytes_transferred=0)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/task_io_service_operation.hpp:38
#18 0x0000000000fe8981 in boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x1cc2e100, base=0x1cc2e270, ec=..., bytes_transferred=1)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/impl/epoll_reactor.ipp:651
#19 0x0000000000c77c8a in boost::asio::detail::task_io_service_operation::complete (this=0x1cc2e270, owner=..., ec=..., bytes_transferred=1)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/task_io_service_operation.hpp:38
#20 0x0000000000c78795 in boost::asio::detail::task_io_service::do_run_one (this=0x1cc2e100, lock=..., this_thread=..., ec=...)
    at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/impl/task_io_service.ipp:384
#21 0x0000000000c784eb in boost::asio::detail::task_io_service::run (this=0x1cc2e100, ec=...) at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/detail/impl/task_io_service.ipp:153
#22 0x0000000000c78a17 in boost::asio::io_service::run (this=0x1381b530) at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/asio/impl/io_service.ipp:59
#23 0x0000000000fe7008 in server::__lambda1::operator() (__closure=0x142a1cb8) at /root/aoshi_server/network/server.cpp:45
#24 0x0000000000fe8134 in boost::detail::thread_data<server::run(std::size_t)::__lambda1>::run(void) (this=0x142a1b00) at /root/aoshi_server/EP_game_server/../libs/boost/include/boost/thread/detail/thread.hpp:117
#25 0x00000000011982fa in thread_proxy ()
#26 0x0000003d4f60683d in start_thread () from /lib64/libpthread.so.0
#27 0x0000003d4eed4fcd in clone () from /lib64/libc.so.6
#28 0x0000000000000000 in ?? ()




出错是的那行代码,就做了std::make_shared

#6里面抛异常的代码是shared_ptr里面的
    490       template<typename _Tp, typename _Alloc, typename... _Args>
    491         __shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a,
    492                        _Args&&... __args)
    493         : _M_pi(0)
    494         {
    495           typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type;
    496           typedef typename allocator_traits<_Alloc>::template
    497             rebind_traits<_Sp_cp_type> _Alloc_traits;
    498           typename _Alloc_traits::allocator_type __a2(__a);
    499           _Sp_cp_type* __mem = _Alloc_traits::allocate(__a2, 1);
    500           __try
    501             {
    502               _Alloc_traits::construct(__a2, __mem, std::move(__a),
    503                     std::forward<_Args>(__args)...);
    504               _M_pi = __mem;
    505             }
    506           __catch(...)
    507             {
    508               _Alloc_traits::deallocate(__a2, __mem, 1);
    509               __throw_exception_again;
    510             }
    511         }


看上去好像是try里面出错了,然后catch了,重新扔出来


这个是个服务器,出错的地方是有个socket脸上,然后new 一个session类,
这个错误很少出现,我开发的时候经常测试一两千个socket链接,很难重现
至今为止偶尔出现过三四次

论坛徽章:
0
2 [报告]
发表于 2015-02-04 11:36 |只看该作者
补充一下,下面这个类在c++11, gcc 下面会不会有问题

template<class T>
class raw_ptr {
private:
    T* p_;
public:
    raw_ptr():p_(0) {}
    raw_ptr(T* p):p_(p) {}
    explicit operator bool() const { return p_; }
    T* operator->() const { return p_; }
    T& operator*() const { return *p_; }
    bool operator<(const raw_ptr<T>& r) const { return p_ < r.p_; }
    bool operator!=(const raw_ptr<T>& r) const { return p_ != r.p_; }

    template<class _CharT, class _Traits>
    void print(std::basic_ostream<_CharT, _Traits>& __os) const {
        __os << p_;
    }
};

template<class _CharT, class _Traits, class _Yp>
inline
std::basic_ostream<_CharT, _Traits>&
operator<<(std::basic_ostream<_CharT, _Traits>& __os, raw_ptr<_Yp> const& __p) {
    __p.print(__os);
    return __os;
}

上面这个类会不会因为这个类引起,因为make_shared那个类,有个参数是这个raw_ptr

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2015-02-08 22:29 |只看该作者
回复 2# jikeling


    把 copy/move ctor 和 copy/move assignment 都加上看看

看到 shared_ptr 里边有个 std::move
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP