serialization in 1.39: crash on program exit
Hi, I just compiled our program with boost 1.39, upgraded from 1.38. Now on exit I get a crash, (unhandled exception: stack overflow). If I look at the call stack, it's filled with Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut() Line 88 C++ Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar deleting destructor'() + 0xf bytes C++ Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister() Line 207 + 0x28 bytes C++ Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut() Line 88 C++ Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar deleting destructor'() + 0xf bytes C++ Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister() Line 207 + 0x28 bytes C++ Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut() Line 88 C++ Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar deleting destructor'() + 0xf bytes C++ compiler: ms visual c++ 2008 boost 1.39.0 I have a whole lot of classes that are registered with BOOST_CLASS_EXPORT, and saved through a shared_ptr to a base class. If I remove the exports, start and quit the application, I don't get a crash. It was working fine in 1.37 and 1.38. (from 1.33.1 on in fact) Has anybody seen this before or any ideas? thx, Filip Peters
Hi Filip, I cannot really help except by telling that I have seen a very similar problem with two compilers: Intel 10.1 (on Scientific Linux 4) and g++ 4.3.2 (on OpenSUSE 11.1), both 64 bit. I am still not sure whether it is a problem with my own program or the serialization library. However, it seems to be related to singletons (of which I have two, and the serialization library maintains at least one, I believe), as the crash happens after the last command in main() (and thus does not affect my program at run-time). Best Regards, Ruediger Filip Peters wrote:
Hi,
I just compiled our program with boost 1.39, upgraded from 1.38. Now on exit I get a crash, (unhandled exception: stack overflow). If I look at the call stack, it's filled with
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister()
Line 207 + 0x28 bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister()
Line 207 + 0x28 bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
compiler: ms visual c++ 2008 boost 1.39.0
I have a whole lot of classes that are registered with BOOST_CLASS_EXPORT, and saved through a shared_ptr to a base class. If I remove the exports, start and quit the application, I don't get a crash.
It was working fine in 1.37 and 1.38. (from 1.33.1 on in fact)
Has anybody seen this before or any ideas?
thx, Filip Peters
I think I've found an error in void_caster.cpp. Should be fixed in next release Robert Ramey Ruediger Berlich wrote:
Hi Filip,
I cannot really help except by telling that I have seen a very similar problem with two compilers: Intel 10.1 (on Scientific Linux 4) and g++ 4.3.2 (on OpenSUSE 11.1), both 64 bit.
I am still not sure whether it is a problem with my own program or the serialization library. However, it seems to be related to singletons (of which I have two, and the serialization library maintains at least one, I believe), as the crash happens after the last command in main() (and thus does not affect my program at run-time).
Best Regards, Ruediger
Filip Peters wrote:
Hi,
I just compiled our program with boost 1.39, upgraded from 1.38. Now on exit I get a crash, (unhandled exception: stack overflow). If I look at the call stack, it's filled with
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister()
Line 207 + 0x28 bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster::recursive_unregister()
Line 207 + 0x28 bytes C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::~void_caster_shortcut()
Line 88 C++
Scene.dll!boost::serialization::void_cast_detail::void_caster_shortcut::`scalar
deleting destructor'() + 0xf bytes C++
compiler: ms visual c++ 2008 boost 1.39.0
I have a whole lot of classes that are registered with BOOST_CLASS_EXPORT, and saved through a shared_ptr to a base class. If I remove the exports, start and quit the application, I don't get a crash.
It was working fine in 1.37 and 1.38. (from 1.33.1 on in fact)
Has anybody seen this before or any ideas?
thx, Filip Peters
participants (3)
-
Filip Peters
-
Robert Ramey
-
Ruediger Berlich