Re: [Boost-bugs] [Boost C++ Libraries] #7666: Boost Thread SIGSEGV on join() when -D_GLIBCXX_DEBUG is used

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #7666: Boost Thread SIGSEGV on join() when -D_GLIBCXX_DEBUG is used
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-09-19 22:17:07


#7666: Boost Thread SIGSEGV on join() when -D_GLIBCXX_DEBUG is used
-------------------------------------+-------------------------------------
  Reporter: Antonio Di Monaco | Owner: viboes
  <tony@…> | Status: assigned
      Type: Bugs | Component: thread
 Milestone: Boost 1.55.0 | Severity: Problem
   Version: Boost 1.52.0 | Keywords: thread SIGSEGV C++11
Resolution: | -D_GLIBCXX_DEBUG
-------------------------------------+-------------------------------------

Comment (by Antonio Di Monaco <tony@…>):

 Here is the backtrace just before the "step" that will trigger the watch.
 But I don't think you'll get more info than the previous one I've already
 posted.

 If it's fine, I can setup a VPN for you, and you can connect to my PC and
 remotely debug the issue. Please contact me to the email address reported
 in the bug.


 {{{
 Breakpoint 1 at 0x40b6bc: file
 C:/x32-481-win32-sjlj-r2/include/boost/thread/win32/thread_data.hpp, line
 123.
 Starting program: C:\Users\Tony\Downloads\boost_1_54_0\test.exe
 [New Thread 2620.0x4e0]

 Breakpoint 1, boost::detail::thread_data_base::thread_data_base (
     this=0x5248a0)
     at
 C:/x32-481-win32-sjlj-r2/include/boost/thread/win32/thread_data.hpp:123
 123 , interruption_enabled(true)
 $1 = std::vector of length 0, capacity 0
 Watchpoint 2: notify
 boost::detail::win32::handle_manager::handle_manager (this=0x5248a8,
     handle_to_manage_=0xffffffff)
     at
 C:/x32-481-win32-sjlj-r2/include/boost/thread/win32/thread_primitives.hpp:281
 281 handle_to_manage(handle_to_manage_)
 282 {}
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
>::allocator (this=0x28fcdc)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:113
 113 allocator() throw() { }
 __gnu_cxx::new_allocator<std::pair<void const* const,
 boost::detail::tss_data_node> >::new_allocator (this=0x28fcdc)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:79
 79 new_allocator() _GLIBCXX_USE_NOEXCEPT { }
 std::__debug::map<void const*, boost::detail::tss_data_node,
 std::less<void const*>, std::allocator<std::pair<void const* const,
 boost::detail::tss_data_node> > >::map (this=0x5248b0, __comp=...,
 __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/map.h:77
 77 : _Base(__comp, __a) { }
 std::__cxx1998::map<void const*, boost::detail::tss_data_node,
 std::less<void const*>, std::allocator<std::pair<void const* const,
 boost::detail::tss_data_node> > >::map (this=0x5248b0, __comp=...,
 __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_map.h:171
 171 : _M_t(__comp, _Pair_alloc_type(__a)) { }
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
>::allocator (this=0x28fc3f, __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:116
 116 : __allocator_base<_Tp>(__a) { }
 __gnu_cxx::new_allocator<std::pair<void const* const,
 boost::detail::tss_data_node> >::new_allocator (this=0x28fc3f)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:81
 81 new_allocator(const new_allocator&) _GLIBCXX_USE_NOEXCEPT {
 }
 std::_Rb_tree<void const*, std::pair<void const* const,
 boost::detail::tss_data_node>, std::_Select1st<std::pair<void const*
 const, boost::detail::tss_data_node> >, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::_Rb_tree (this=0x5248b0, __comp=..., __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_tree.h:652
 652 : _M_impl(__comp, _Node_allocator(__a)) { }
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::allocator<std::pair<void const* const,
 boost::detail::tss_data_node> > (this=0x28fbbf)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:119
 119 allocator(const allocator<_Tp1>&) throw() { }
 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::new_allocator (this=0x28fbbf)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:79
 79 new_allocator() _GLIBCXX_USE_NOEXCEPT { }
 std::_Rb_tree<void const*, std::pair<void const* const,
 boost::detail::tss_data_node>, std::_Select1st<std::pair<void const*
 const, boost::detail::tss_data_node> >, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::_Rb_tree_impl<std::less<void const*>,
 true>::_Rb_tree_impl(std::less<void const*> const&,
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >&&) (
     this=0x5248b0, __comp=...,
     __a=<unknown type in C:\Users\Tony\Downloads\boost_1_54_0\test.exe, CU
 0x0, DIE 0x53da0>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_tree.h:457
 457 : _Node_allocator(std::move(__a)),
 _M_key_compare(__comp),
 std::move<std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >&> (__t=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/move.h:102
 102 { return static_cast<typename
 std::remove_reference<_Tp>::type&&>(__t); }
 std::_Rb_tree<void const*, std::pair<void const* const,
 boost::detail::tss_data_node>, std::_Select1st<std::pair<void const*
 const, boost::detail::tss_data_node> >, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::_Rb_tree_impl<std::less<void const*>,
 true>::_Rb_tree_impl(std::less<void const*> const&,
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >&&) (
     this=0x5248b0, __comp=...,
     __a=<unknown type in C:\Users\Tony\Downloads\boost_1_54_0\test.exe, CU
 0x0, DIE 0x53da0>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_tree.h:458
 458 _M_header(), _M_node_count(0)
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::allocator (this=0x5248b0, __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:116
 116 : __allocator_base<_Tp>(__a) { }
 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::new_allocator (this=0x5248b0)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:81
 81 new_allocator(const new_allocator&) _GLIBCXX_USE_NOEXCEPT {
 }
 std::_Rb_tree<void const*, std::pair<void const* const,
 boost::detail::tss_data_node>, std::_Select1st<std::pair<void const*
 const, boost::detail::tss_data_node> >, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::_Rb_tree_impl<std::less<void const*>,
 true>::_Rb_tree_impl(std::less<void const*> const&,
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >&&) (
     this=0x5248b0, __comp=...,
     __a=<unknown type in C:\Users\Tony\Downloads\boost_1_54_0\test.exe, CU
 0x0, DIE 0x53da0>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_tree.h:459
 459 { _M_initialize(); }
 std::_Rb_tree<void const*, std::pair<void const* const,
 boost::detail::tss_data_node>, std::_Select1st<std::pair<void const*
 const, boost::detail::tss_data_node> >, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::_Rb_tree_impl<std::less<void const*>, true>::_M_initialize
 (this=0x5248b0)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/stl_tree.h:466
 466 this->_M_header._M_color = _S_red;
 467 this->_M_header._M_parent = 0;
 468 this->_M_header._M_left = &this->_M_header;
 469 this->_M_header._M_right = &this->_M_header;
 470 }
 std::allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::~allocator (this=0x28fbbf,
 __in_chrg=<optimized out>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:121
 121 ~allocator() throw() { }
 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<void const* const,
 boost::detail::tss_data_node> > >::~new_allocator (this=0x28fbbf,
     __in_chrg=<optimized out>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:86
 86 ~new_allocator() _GLIBCXX_USE_NOEXCEPT { }
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
>::~allocator (this=0x28fc3f, __in_chrg=<optimized out>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/bits/allocator.h:121
 121 ~allocator() throw() { }
 __gnu_cxx::new_allocator<std::pair<void const* const,
 boost::detail::tss_data_node> >::~new_allocator (this=0x28fc3f,
 __in_chrg=<optimized out>)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/ext/new_allocator.h:86
 86 ~new_allocator() _GLIBCXX_USE_NOEXCEPT { }
 __gnu_debug::_Safe_sequence<std::__debug::map<void const*,
 boost::detail::tss_data_node, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> > >::_Safe_sequence (this=0x5248c8)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/safe_sequence.h:111
 111 class _Safe_sequence : public _Safe_sequence_base
 __gnu_debug::_Safe_sequence_base::_Safe_sequence_base (this=0x5248c8)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/safe_base.h:192
 192 : _M_iterators(0), _M_const_iterators(0), _M_version(1)
 #0 __gnu_debug::_Safe_sequence_base::_Safe_sequence_base (this=0x5248c8)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/safe_base.h:192
 #1 0x00407db3 in __gnu_debug::_Safe_sequence<std::__debug::map<void
 const*, boost::detail::tss_data_node, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> > >::_Safe_sequence (
     this=0x5248c8)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/safe_sequence.h:111
 #2 0x00410754 in std::__debug::map<void const*,
 boost::detail::tss_data_node, std::less<void const*>,
 std::allocator<std::pair<void const* const, boost::detail::tss_data_node>
> >::map (this=0x5248b0, __comp=..., __a=...)
     at
 c:/x32-481-win32-sjlj-r2/lib/gcc/i686-w64-mingw32/4.8.1/include/c++/debug/map.h:77
 #3 0x0040b71b in _fu4___ZTVN5boost6detail16thread_data_baseE ()
     at
 C:/x32-481-win32-sjlj-r2/include/boost/thread/win32/thread_data.hpp:123
 #4 0x0040b483 in boost::detail::thread_data<void (*)()>::thread_data(void
 (*&&)()) (this=0x5248a0,
     f_=<unknown type in C:\Users\Tony\Downloads\boost_1_54_0\test.exe, CU
 0x0, DIE 0x4f591>)
     at C:/x32-481-win32-sjlj-r2/include/boost/thread/detail/thread.hpp:98
 #5 0x0040bc75 in boost::detail::heap_new<boost::detail::thread_data<void
 (*)()>, void (*)()>(void (*&&)()) (
     a1=<unknown type in C:\Users\Tony\Downloads\boost_1_54_0\test.exe, CU
 0x0, DIE 0x4f591>)
     at
 C:/x32-481-win32-sjlj-r2/include/boost/thread/win32/thread_heap_alloc.hpp:100
 #6 0x0040c0b5 in boost::thread::make_thread_info (f=0x401637 <myFunc()>)
     at C:/x32-481-win32-sjlj-r2/include/boost/thread/detail/thread.hpp:220
 #7 0x0040c229 in boost::thread::thread<void (&)()> (this=0x28fe8c,
     f=@0x401637: {void (void)} 0x401637 <myFunc()>)
     at C:/x32-481-win32-sjlj-r2/include/boost/thread/detail/thread.hpp:265
 #8 0x00401720 in main () at test.cpp:10

 /// here I perform the last "step" command

 Watchpoint 2: notify

 Old value = std::vector of length 0, capacity 0
 New value = Cannot access memory at address 0x0
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/7666#comment:25>
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 : 2017-02-16 18:50:14 UTC