id summary reporter owner description type status milestone component version severity resolution keywords cc 10084 void_upcast should throw an unregistered_cast exception when it can't find a way to upcast Steve Hickman Robert Ramey "It is possible for the void_caster_register to not include information on how to upcast between types. In version 1.55, void_upcast(lines 314-334) in void_cast.cpp searches the void_caster_register for this information and, if it finds none, returns NULL. If this happens when doing deserialization, it means that all of the deserialized data is thrown away (event though it may have been successfully completed) and the user gets a null pointer back instead. At a minimum, this results in mysterious behavior when deserializing derived classes through a base class pointer. At worst, this may result in a memory leak (haven't investigated this). It seems to me that rather than surprising the user like this, failures to find appropriate cast info in the void_caster_register should cause an unregistered_cast exception (or something similar) so the user will at least know where the problem is. This can happen even though void_upcast the appropriate type information for both the base and derived class. This problem occurs when the void_caster_register is empty, which has happened when both Boost.Serialize and the library of classes to be serialized are created as DLLs on Windows 7 when building using VS2012." Bugs closed To Be Determined serialization Boost 1.55.0 Problem fixed