Subject: Re: [Boost-bugs] [Boost C++ Libraries] #5340: Patch to support concrete base classes becomming abstract classes
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-08-13 12:24:35
#5340: Patch to support concrete base classes becomming abstract classes
-------------------------------------+-------------------------------------
Reporter: Aaron Barany | Owner: ramey
<akb825@â¦> | Status: new
Type: Patches | Component: serialization
Milestone: To Be Determined | Severity: Showstopper
Version: Boost 1.47.0 | Keywords: serialization abstract
Resolution: | concrete
-------------------------------------+-------------------------------------
Comment (by boldie@â¦):
I just found another problem with the patch, on shutdown there is a pure
virtual method called. Using the debugger and the this pointer of frame 7,
I got a segfault, so this seems to be a dangling pointer which also caused
the "pure virtual method called".
I have tried to understand what happens here, but my insight to the
singleton things from the lib is very limited. So far I found a suspicious
part in boost/archive/impl/archive_serializer_map.ipp:175 where the
element is only erased if the wrapper is not destroyed, but unfortunately
the wrapper destroy will be set prior to the destructor calling of the
iserialzer. Removing this part of code does not fix the problem, so it
must be elsewhere.
{{{
pure virtual method called
terminate called without an active exception
Program received signal SIGABRT, Aborted.
0xb7fdd424 in __kernel_vsyscall ()
(gdb) bt
#0 0xb7fdd424 in __kernel_vsyscall ()
#1 0xb1a3120f in __GI_raise (sig=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0xb1a34855 in __GI_abort () at abort.c:91
#3 0xb1ca613d in __gnu_cxx::__verbose_terminate_handler() () from
/usr/lib/i386-linux-gnu/libstdc++.so.6
#4 0xb1ca3ed3 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#5 0xb1ca3f0f in std::terminate() () from /usr/lib/i386-linux-
gnu/libstdc++.so.6
#6 0xb1ca4b82 in __cxa_pure_virtual () from /usr/lib/i386-linux-
gnu/libstdc++.so.6
#7 0xb2aea283 in boost::serialization::extended_type_info::operator<
(this=0x83d5c34, rhs=...) at
libs/serialization/src/extended_type_info.cpp:169
#8 0xb2ae00f7 in operator< (rhs=..., this=0x83d5c58) at
./boost/archive/detail/basic_serializer.hpp:54
#9
boost::archive::detail::basic_serializer_map::type_info_pointer_compare::operator()
(this=0xb2b15188, lhs=0x83d5c58, rhs=0x83d5cac)
at libs/serialization/src/basic_serializer_map.cpp:42
#10 0xb2ae0472 in std::_Rb_tree<boost::archive::detail::basic_serializer*,
boost::archive::detail::basic_serializer*,
std::_Identity<boost::archive::detail::basic_serializer*>,
boost::archive::detail::basic_serializer_map::type_info_pointer_compare,
std::allocator<boost::archive::detail::basic_serializer*> >::equal_range
(this=0xb2b15188, __k=@0xbfffeee4: 0x83d5cac) at
/usr/include/c++/4.6/bits/stl_tree.h:1158
#11 0xb2ae028e in equal_range (__x=@0xbfffeee4: 0x83d5cac,
this=0xb2b15188) at /usr/include/c++/4.6/bits/stl_multiset.h:649
#12 boost::archive::detail::basic_serializer_map::erase (this=0xb2b15188,
bs=0x83d5cac) at libs/serialization/src/basic_serializer_map.cpp:57
#13 0xb2ae2939 in
boost::archive::detail::archive_serializer_map<boost::archive::binary_iarchive>::erase
(bs=0x83d5cac)
at ./boost/archive/impl/archive_serializer_map.ipp:175
#14 0xb4f7a9b3 in
boost::archive::detail::iserializer<boost::archive::binary_iarchive,
boost::intrusive_ptr<ngp::Variant::ValueBase> >::~iserializer (
this=0x83d5ca8, __in_chrg=<optimized out>) at
/usr/include/boost/archive/detail/iserializer.hpp:161
#15 0xb4f7aa58 in
boost::serialization::detail::singleton_wrapper<boost::archive::detail::iserializer<boost::archive::binary_iarchive,
boost::intrusive_ptr<ngp::Variant::ValueBase> > >::~singleton_wrapper
(this=0x83d5ca8, __in_chrg=<optimized out>) at
/usr/include/boost/serialization/singleton.hpp:112
#16 0xb1a3632b in __cxa_finalize (d=0xb7f95fc0) at cxa_finalize.c:56
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/5340#comment:8> 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:16 UTC