Re: [Boost-bugs] [Boost C++ Libraries] #3014: Assertion on unregistering of extended_type_info

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #3014: Assertion on unregistering of extended_type_info
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-05-19 05:13:35


#3014: Assertion on unregistering of extended_type_info
-----------------------------------+----------------------------------------
  Reporter: mazay0_at_[hidden] | Owner: ramey
      Type: Bugs | Status: reopened
 Milestone: Boost 1.39.0 | Component: serialization
   Version: Boost Release Branch | Severity: Problem
Resolution: | Keywords:
-----------------------------------+----------------------------------------
Changes (by mazay0_at_[hidden]):

  * status: closed => reopened
  * resolution: fixed =>

Comment:

 Replying to [comment:2 ramey]:
> ...
 Unfortunately this fix doesn't help. I've managed to create a minimal
 example which repoduce the bug (see attach
 https://svn.boost.org/trac/boost/attachment/ticket/3014/minimal_example_boost3014.zip).
 Put breakpoints in key_register() and key_unregister() methods to meditate
 on the issue. As far as I understand the key_register() method is being
 invoked by guid_initializer from every translation unit which includes
 BOOST_CLASS_EXPORT_GUID macro. So two pointers to the same instance of
 extended_type_info appears in ktmap multiset. When key_unregister() is
 beig called first time everything works fine, but only one pointer is
 being erased from ktmap. The other one stays there and points to
 extended_type_info object with nulled m_key field. So, when
 key_unregister() is called at second time (no mater for which type), the
 lower_bound() call blows up on this mine.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/3014#comment:3>
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:00 UTC