Boost logo

Boost :

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk