Boost logo

Boost :

Subject: Re: [boost] [1.37.0][serialization] Assertion failed at libs/serialization/src/extended_type_info.cpp:92
From: troy d. straszheim (troy_at_[hidden])
Date: 2008-10-22 22:36:58


Hartmut Kaiser wrote:
>
> 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).
>

Hey Hartmut,

1. What does the output of 'gcc --verbose' give you? I'm looking for
    some flags that show how gcc was built, specifically one involving
    __cxa_atexit (i'm just following a hunch)
2. Have you tried dlopening these libs with (RTLD_NOW | RTLD_GLOBAL)?

-t

> 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
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


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