Subject: [boost] [1.37.0][serialization] Assertion failed at libs/serialization/src/extended_type_info.cpp:92
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2008-10-21 09:04:43


Anything I can do about this?
What does this assertion mean?

My setup: Linux 64Bit, gcc 4.2.4, serialization is used for polymorphic
objects loaded from different shared libraries, shared libraries are loaded
with dlopen(RTLD_GLOBAL|RTLD_LAZY).

Assertion (extended_type_info.cpp:92) occurs during program termination
(after main returned), during dlclose().

If anything else isn't possible, would it be appropriate to change the
related code (before the release!) from:

        assert(start != end);

        // remove entry in map which corresponds to this type
        do{
            if(this == *start)
                x.erase(start++);
            else
                    ++start;
        }while(start != end);

To:

        assert(start != end);

        // remove entry in map which corresponds to this type
        while(start != end) {
            if(this == *start)
                x.erase(start++);
            else
                    ++start;
        }

Which wouldn't remove the problem, but at least avoids hanging the program
if assertions are off...

Regards Hartmut