Hi, I have a class using boost_1.32/serialization to save/restore object
data and it's working fine for loading & saving its own archive. I tried to
make it load an archive saved by an unrelated class in order to verify
exception handling of reading wrong/ corrupt archive. It dumps core at
basic_iarchive_impl::load_pointer. Is it a known issue ? Anyone has similar
experience ? Thanks.
Junyi Sun
--------------- here the core trace ----------------
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libtcl8.4.so...done.
Loaded symbols for /usr/lib/libtcl8.4.so
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /usr/lib/libstdc++.so.5...done.
Loaded symbols for /usr/lib/libstdc++.so.5
Reading symbols from /lib/tls/libm.so.6...done.
Loaded symbols for /lib/tls/libm.so.6
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/tls/libc.so.6...done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
#0 0x081c16cb in boost::archive::detail::basic_iarchive_impl::load_pointer ()
(gdb) bt
#0 0x081c16cb in boost::archive::detail::basic_iarchive_impl::load_pointer ()
#1 0x081c0d23 in boost::archive::detail::basic_iarchive::load_pointer ()
#2 0x08060344 in
boost::archive::detail::load_pointer_type::invoke (ar=@0xfef3c240,
t=@0xfef3bf74) at iserializer.hpp:450
#3 0x08060304 in load
(ar=@0xfef3c240, t=@0xfef3bf74) at iserializer.hpp:529
#4 0x080602ea in load_override (this=0xfef3c240,
t=@0xfef3bf74) at basic_text_iarchive.hpp:60
#5 0x080602c6 in load_override (this=0xfef3c240,
t=@0xfef3bf74) at text_iarchive.hpp:59
#6 0x08060298 in operator& (this=0xfef3c240, t=@0xfef3bf74) at
interface_iarchive.hpp:92
#7 0x08060260 in serializeboost::archive::text_iarchive
(this=0xfef3bc80, ar=@0xfef3c240) at nvp.hpp:58
#8 0x0806023d in serialize > (ar=@0xfef3c240, t=@0xfef3bc80,
file_version=0) at access.hpp:106
#9 0x0806021b in serialize > (ar=@0xfef3c240, t=@0xfef3bc80,
file_version=0) at serialization.hpp:78
#10 0x080601f9 in serialize_adl > (ar=@0xfef3c240,
t=@0xfef3bc80, file_version=0) at serialization.hpp:121
#11 0x080601d8 in
boost::archive::detail::load_non_pointer_type >::load_only::invoke (ar=@0xfef3c240,
t=@0xfef3bc80) at iserializer.hpp:318
#12 0x080601b6 in
boost::archive::detail::load_non_pointer_type >::invoke (ar=@0xfef3c240,
t=@0xfef3bc80) at iserializer.hpp:366
#13 0x0806019c in load > (ar=@0xfef3c240, t=@0xfef3bc80)
at iserializer.hpp:529
#14 0x08060182 in load_override >
(this=0xfef3c240, t=@0xfef3bc80)
at basic_text_iarchive.hpp:60
#15 0x0806015e in load_override >
(this=0xfef3c240, t=@0xfef3bc80) at text_iarchive.hpp:59
#16 0x08060130 in operator>> >
(this=0xfef3c240, t=@0xfef3bc80) at interface_iarchive.hpp:105
#17 0x080600b8 in operator& >
(this=0xfef3c240, t=@0xfef3bc80) at interface_iarchive.hpp:111
#18 0x0805fe43 in serialize (ar=@0xfef3c240, p=@0xfef3bf70) at utility.hpp:47
#19 0x0805f59f in serialize_adl > (ar=@0xfef3c240, t=@0xfef3bf70,
file_version=1) at serialization.hpp:121
#20 0x0805f48f in
boost::archive::detail::iserializer >::load_object_data (this=0x8a3f6c0,
ar=@0xfef3c240, x=0xfef3bf70, file_version=1) at iserializer.hpp:155
#21 0x081c143a in boost::archive::detail::basic_iarchive_impl::load_object ()
#22 0x081c0d00 in boost::archive::detail::basic_iarchive::load_object ()
#23 0x0805df95 in
boost::archive::detail::load_non_pointer_type >::load::invoke (ar=@0xfef3c240,
t=@0xfef3bf70) at iserializer.hpp:328
#24 0x0805df6c in
boost::archive::detail::load_non_pointer_type >::invoke (ar=@0xfef3c240,
t=@0xfef3bf70) at iserializer.hpp:366
#25 0x0805df52 in load > (ar=@0xfef3c240, t=@0xfef3bf70)
at iserializer.hpp:529
#26 0x0805df38 in load_override >
(this=0xfef3c240, t=@0xfef3bf70) at basic_text_iarchive.hpp:60
#27 0x0805df14 in load_override >
(this=0xfef3c240, t=@0xfef3bf70) at text_iarchive.hpp:59
#28 0x0805dee6 in operator& >
(this=0xfef3c240, t=@0xfef3bf70) at interface_iarchive.hpp:92
#29 0x0805deae in serializeboost::archive::text_iarchive
(this=0xfef3bf60, ar=@0xfef3c240) at nvp.hpp:58
#30 0x0805de8b in serialize > > (
ar=@0xfef3c240, t=@0xfef3bf60, file_version=0) at access.hpp:106
#31 0x0805de69 in serialize > > (
ar=@0xfef3c240, t=@0xfef3bf60, file_version=0) at serialization.hpp:78
#32 0x0805de47 in serialize_adl > > (
ar=@0xfef3c240, t=@0xfef3bf60, file_version=0) at serialization.hpp:121
#33 0x0805de26 in
boost::archive::detail::load_non_pointer_type > >::load_only::invoke (ar=@0xfef3c240, t=@0xfef3bf60) at
iserializer.hpp:318
#34 0x0805de04 in
boost::archive::detail::load_non_pointer_type > >::invoke
(ar=@0xfef3c240, t=@0xfef3bf60) at iserializer.hpp:366
#35 0x0805ddea in load > > (
---Type <return> to continue, or q <return> to quit---
ar=@0xfef3c240, t=@0xfef3bf60) at iserializer.hpp:529
#36 0x0805ddd0 in
load_override > > (this=0xfef3c240, t=@0xfef3bf60)
at basic_text_iarchive.hpp:60
#37 0x0805ddac in
load_override > > (this=0xfef3c240, t=@0xfef3bf60)
at text_iarchive.hpp:59
#38 0x0805dd7e in
operator>> > >
(this=0xfef3c240, t=@0xfef3bf60)
at interface_iarchive.hpp:105
#39 0x0805d2d2 in
boost::serialization::stl::archive_input_mapstd::string,
std::allocator > > >::operator()
(this=0xfef3bfae, ar=@0xfef3c240,
s=@0xe3693e4) at collections_load_imp.hpp:110
#40 0x0805d192 in load_collectionstd::string,
std::allocator > >,
boost::serialization::stl::archive_input_mapstd::string,
std::allocator > > >,
boost::serialization::stl::no_reserve_impstd::string, std::allocator > > > > (ar=@0xfef3c240, s=@0xe3693e4) at
collections_load_imp.hpp:158
#41 0x0805d110 in loadstd::string, std::allocator > > (ar=@0xfef3c240, t=@0xe3693e4) at map.hpp:61
#42 0x0805d0f5 in
boost::serialization::free_loaderstd::string,
std::allocator > > >::invoke
(ar=@0xfef3c240, t=@0xe3693e4, file_version=0)
at split_free.hpp:55
#43 0x0805d0d3 in split_freestd::string,
std::allocator > > >
(ar=@0xfef3c240, t=@0xe3693e4, file_version=0) at split_free.hpp:66
#44 0x0805d0b1 in serializestd::string, std::allocator > > (ar=@0xfef3c240, t=@0xe3693e4, file_version=0)
at map.hpp:81
#45 0x0805b339 in serialize_adlstd::string,
std::allocator > > >
(ar=@0xfef3c240, t=@0xe3693e4, file_version=0) at serialization.hpp:121
#46 0x0805b03b in
boost::archive::detail::iserializerstd::string,
std::allocator > > >::load_object_data (this=0x8a3f5b0, ar=@0xfef3c240,
x=0xe3693e4, file_version=0) at iserializer.hpp:155
#47 0x081c143a in boost::archive::detail::basic_iarchive_impl::load_object ()
#48 0x081c0d00 in boost::archive::detail::basic_iarchive::load_object ()
#49 0x08058aa3 in
boost::archive::detail::load_non_pointer_typestd::string,
std::allocator > > >::load::invoke
(ar=@0xfef3c240, t=@0xe3693e4)
at iserializer.hpp:328
#50 0x08058a7a in
boost::archive::detail::load_non_pointer_typestd::string,
std::allocator > > >::invoke
(ar=@0xfef3c240, t=@0xe3693e4)
at iserializer.hpp:366
#51 0x08058a60 in loadstd::string, std::allocator > > > (ar=@0xfef3c240, t=@0xe3693e4) at
iserializer.hpp:529
#52 0x08058a46 in
boost::archive::basic_text_iarchiveboost::archive::text_iarchive::load_overridestd::string, std::allocator > > > (this=0xfef3c240, t=@0xe3693e4)
at basic_text_iarchive.hpp:60
#53 0x08058a22 in
boost::archive::text_iarchive_implboost::archive::text_iarchive::load_overridestd::string, std::allocator > > > (this=0xfef3c240, t=@0xe3693e4)
at text_iarchive.hpp:59
#54 0x080579b8 in operator>>std::string, std::allocator > > > (this=0xfef3c240, t=@0xe3693e4) at interface_iarchive.hpp:83
#55 0x08056615 in encode_function (domain_id=208, bat=0xe728070,
info=0xea2c339 "22 serialization::archive 3 0 0 4 1 1 3\n0 0 0 0 1\n1
0 1\n2 0 1\n3 0", info_len=65) at encode.cc:102