[Boost-bugs] [Boost C++ Libraries] #13399: pthread_create segfaults when program is restarted after some time

Subject: [Boost-bugs] [Boost C++ Libraries] #13399: pthread_create segfaults when program is restarted after some time
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2018-01-16 08:35:32


#13399: pthread_create segfaults when program is restarted after some time
----------------------------------+----------------------------
 Reporter: ttomas.mikalauskas@… | Owner: chris_kohlhoff
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: asio
  Version: Boost 1.56.0 | Severity: Problem
 Keywords: Threads Asio TCP |
----------------------------------+----------------------------
 Hi,

 We are using boost 1.56 version on CentOS 7.4.1708 (Core)

 This bug happens from time to time when we are restating application,
 while simulated multiple clients send message to the server.

 {{{
 [Switching to Thread 0x7fffeb6ac700 (LWP 27894)]
 processMessageImpl (
     data_="STRING DATA"...) at main.cpp:564
 564 if (!client->connected)
 (gdb) bt full
 #0 processMessageImpl (
     data_="CONTENT DATA DELETED"...) at main.cpp:564
         parseSucc = <optimized out>
         dataStream = {<std::basic_istream<char, std::char_traits<char> >>
 = {<std::basic_ios<char, std::char_traits<char> >> = {<std::ios_base> =
 {_vptr.ios_base = 0x7fffeb6ac700,
                 static boolalpha = std::_S_boolalpha, static dec =
 std::_S_dec, static fixed = std::_S_fixed, static hex = std::_S_hex,
 static internal = std::_S_internal, static left = std::_S_left,
                 static oct = std::_S_oct, static right = std::_S_right,
 static scientific = std::_S_scientific, static showbase =
 std::_S_showbase, static showpoint = std::_S_showpoint,
                 static showpos = std::_S_showpos, static skipws =
 std::_S_skipws, static unitbuf = std::_S_unitbuf, static uppercase =
 std::_S_uppercase, static adjustfield = std::_S_adjustfield,
                 static basefield = std::_S_basefield, static floatfield =
 std::_S_floatfield, static badbit = std::_S_badbit, static eofbit =
 std::_S_eofbit, static failbit = std::_S_failbit,
                 static goodbit = std::_S_goodbit, static app =
 std::_S_app, static ate = std::_S_ate, static binary = std::_S_bin, static
 in = std::_S_in, static out = std::_S_out,
                 static trunc = std::_S_trunc, static beg = std::_S_beg,
 static cur = std::_S_cur, static end = std::_S_end, _M_precision = 0,
 _M_width = 0, _M_flags = 3825362640,
                 _M_exception = (std::_S_badbit | std::_S_eofbit |
 std::_S_failbit | unknown: 32760), _M_streambuf_state = (unknown:
 3825235264), _M_callbacks = 0x6ee9a0, _M_word_zero = {
                   _M_pword = 0x7fffeb6abb30, _M_iword = 7268672},
 _M_local_word = {{_M_pword = 0x0, _M_iword = 4528892}, {_M_pword = 0x0,
 _M_iword = 140737018779704}, {_M_pword = 0x0,
                     _M_iword = 140737351885008}, {_M_pword = 0x6ea448,
 _M_iword = 140737018597424}, {_M_pword = 0x0, _M_iword = 152}, {_M_pword =
 0x100007f27820002, _M_iword = 0}, {_M_pword = 0x0,
                     _M_iword = 140733193388032}, {_M_pword = 0x4517b0
 <tcpServer::handle_accept(session*, boost::system::error_code const&)>,
 _M_iword = 0}}, _M_word_size = 7268672,
                 _M_word = 0x7fffe40266d0, _M_ios_locale = {static none =
 0, static ctype = 1, static numeric = 2, static collate = 4, static time =
 8, static monetary = 16, static messages = 32,
                   static all = 63, _M_impl = 0xffffffff, static _S_classic
 = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>, static _S_global
 = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>,
                   static _S_categories = 0x7ffff665f900
 <__gnu_cxx::category_names>, static _S_once = 2}}, _M_tie =
 0x7fffe40ca4c0, _M_fill = 30 '\036', _M_fill_init = false, _M_streambuf =
 0x7fffeb6abbe0,
               _M_ctype = 0x6bf770, _M_num_put = 0x49182c <void
 boost::function1<void, std::string&>::assign_to<void
 (*)(std::string)>(void (*)(std::string))::stored_vtable+12>, _M_num_get =
 0x1},
             _vptr.basic_istream = 0x7fffeb6ac700, _M_gcount = 0},
 _M_stringbuf = {<std::basic_streambuf<char, std::char_traits<char> >> =
 {_vptr.basic_streambuf = 0x0, _M_in_beg = 0x7fffe40266d0 "",
               _M_in_cur = 0x7fffe4007540 "0\321I", _M_in_end = 0x6ee9a0
 "\200\027", _M_out_beg = 0x7fffeb6abb30 "\002", _M_out_cur = 0x6ee940
 "p\327k", _M_out_end = 0x0, _M_buf_locale = {static none = 0,
                 static ctype = 1, static numeric = 2, static collate = 4,
 static time = 8, static monetary = 16, static messages = 32, static all =
 63,
                 _M_impl = 0x451afc <tcpServer::handle_accept(session*,
 boost::system::error_code const&)+844>, static _S_classic = 0x7ffff667be00
 <(anonymous namespace)::c_locale_impl>,
                 static _S_global = 0x7ffff667be00 <(anonymous
 namespace)::c_locale_impl>, static _S_categories = 0x7ffff665f900
 <__gnu_cxx::category_names>, static _S_once = 2}}, _M_mode = (unknown: 0),
             _M_string = ""}}
         tree = {m_data = <error reading variable: Cannot access memory at
 address 0x98>, m_children = 0x9}
         spId = <error reading variable: Cannot access memory at address
 0x26f8>
         url = ""
         client = 0x0
         v1_9Flag = <optimized out>
 #1 0x0000000000434c8a in operator()<void (*)(std::basic_string<char>),
 boost::_bi::list0> (f=@0x7fffeb6abc70: 0x42f490
 <processMessageImpl(std::string)>, a=<synthetic pointer>,
 this=0x7fffeb6abc78)
     at /usr/local/include/boost/bind/bind.hpp:253
 No locals.
 #2 operator() (this=0x7fffeb6abc70) at
 /usr/local/include/boost/bind/bind_template.hpp:20
 No locals.
 #3 asio_handler_invoke<boost::_bi::bind_t<void, void
 (*)(std::basic_string<char>),
 boost::_bi::list1<boost::_bi::value<std::basic_string<char> > > > >
 (function=...)
     at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69
 No locals.
 #4 invoke<boost::_bi::bind_t<void, void (*)(std::basic_string<char>),
 boost::_bi::list1<boost::_bi::value<std::basic_string<char> > > >,
 boost::_bi::bind_t<void, void (*)(std::basic_string<char>),
 boost::_bi::list1<boost::_bi::value<std::basic_string<char> > > > >
 (context=..., function=...) at
 /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37
 No locals.
 #5 boost::asio::detail::completion_handler<boost::_bi::bind_t<void, void
 (*)(std::string), boost::_bi::list1<boost::_bi::value<std::string> > >
>::do_complete (owner=0x6bf770, base=<optimized out>)
     at /usr/local/include/boost/asio/detail/completion_handler.hpp:68
         h = <optimized out>
         p = {h = <optimized out>, v = 0x0, p = 0x0}
         handler = {f_ = 0x42f490 <processMessageImpl(std::string)>, l_ =
 {<boost::_bi::storage1<boost::_bi::value<std::basic_string<char,
 std::char_traits<char>, std::allocator<char> > > >> = {a1_ = {
                 t_ = "CONTENT DATA DELETED"...}}, <No data fields>}}
 #6 0x000000000043ca00 in complete (bytes_transferred=<optimized out>,
 ec=..., owner=..., this=<optimized out>) at
 /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38
 No locals.
 #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at
 /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372
         task_result = <optimized out>
         on_exit = {task_io_service_ = 0x6bf770, lock_ = 0x7fffeb6abcc0,
 this_thread_ = 0x7fffeb6abd30}
         more_handlers = true
 #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at
 /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149
         this_thread = {<boost::asio::detail::thread_info_base> =
 {<boost::asio::detail::noncopyable> = {<No data fields>}, reusable_memory_
 = 0x7fffe40983b0},
           private_op_queue = {<boost::asio::detail::noncopyable> = {<No
 data fields>}, front_ = 0x0, back_ = 0x0}, private_outstanding_work = 0}
         ctx = {<boost::asio::detail::noncopyable> = {<No data fields>},
 key_ = 0x6bf770, value_ = 0x7fffeb6abd30, next_ = 0x0}
         lock = {<boost::asio::detail::noncopyable> = {<No data fields>},
 mutex_ = @0x6bf7a0, locked_ = false}
         n = 70
 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770
 <io_service>) at /usr/local/include/boost/asio/impl/io_service.ipp:59
         ec = {m_val = 0, m_cat = 0x7ffff7dda0d0
 <boost::system::system_category()::system_category_const>}
         s = <optimized out>
 #10 0x00007ffff6ed030a in thread_proxy () from
 /lib64/libboost_thread.so.1.56.0
 No symbol table info available.
 #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at
 pthread_create.c:308
         __res = <optimized out>
         pd = 0x7fffeb6ac700
 }}}

 {{{
 // Some comments here
 #0 processMessageImpl (
     data_="{\"CONTENT DATA DELETED"...) at main.cpp:564
 #1 0x0000000000434c8a in operator()<void (*)(std::basic_string<char>),
 boost::_bi::list0> (f=@0x7fffeb6abc70: 0x42f490
 <processMessageImpl(std::string)>, a=<synthetic pointer>,
 this=0x7fffeb6abc78)
     at /usr/local/include/boost/bind/bind.hpp:253
 #2 operator() (this=0x7fffeb6abc70) at
 /usr/local/include/boost/bind/bind_template.hpp:20
 #3 asio_handler_invoke<boost::_bi::bind_t<void, void
 (*)(std::basic_string<char>),
 boost::_bi::list1<boost::_bi::value<std::basic_string<char> > > > >
 (function=...)
     at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69
 #4 invoke<boost::_bi::bind_t<void, void (*)(std::basic_string<char>),
 boost::_bi::list1<boost::_bi::value<std::basic_string<char> > > >,
 boost::_bi::bind_t<void, void (*)(std::basic_string<char>), boost::_b
 i::list1<boost::_bi::value<std::basic_string<char> > > > > (context=...,
 function=...) at
 /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37
 #5 boost::asio::detail::completion_handler<boost::_bi::bind_t<void, void
 (*)(std::string), boost::_bi::list1<boost::_bi::value<std::string> > >
>::do_complete (owner=0x6bf770, base=<optimized out>)
     at /usr/local/include/boost/asio/detail/completion_handler.hpp:68
 #6 0x000000000043ca00 in complete (bytes_transferred=<optimized out>,
 ec=..., owner=..., this=<optimized out>) at
 /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38
 #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at
 /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372
 #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at
 /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149
 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770
 <io_service>) at /usr/local/include/boost/asio/impl/io_service.ipp:59
 #10 0x00007ffff6ed030a in thread_proxy () from
 /lib64/libboost_thread.so.1.56.0
 #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at
 pthread_create.c:308
 #12 0x00007ffff5b9234d in clone () at
 ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac10/boost/ticket/13399>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2018-01-16 08:39:52 UTC