I believe the issue has been addressed in 1.34. That may or may not be the same as "fixed in 1.34". I've tried to address it by: a) fixing the order of initialization by carefully considering depencies. b) permiting multiple instances of extended type info for the same type which might occur in diffferent DLLS. The entails deleting the correct one when the destructor is called. Its hard to make a test for so its sort of precarious. But there it is. Robert Ramey Sohail Somani wrote:
Robert,
I've seen this thread here:
http://thread.gmane.org/gmane.comp.lib.boost.user/21885
And I believe I am coming across the same issue (static *serializer instances) manifesting itself as an assertion failure:
Assertion failed: lookup(eti) == m_self->m_map.end(), file vendor/boost/libs/serialization/src/extended_type_info.cpp, line 77
That assertion means that a type_info key is being registered twice. I've verified this via cout (\o/ for debugging).
Now I am also of the opinion that there is no way to do this initialization without bringing a threading library into Boost.Serialization. From reading the comments in the code, it appears that the only reason the library is using these singletons is because of VC6. Is it possible to have some thread-safe way (perhaps via ifdefs?) to do these singletons? Or do you think there is another reason I am having this issue?
Thanks,
Sohail
PS: I'm using 1.33.1. If the issue is fixed in 1.34, I'd be very glad!