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