
Troy,
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).
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)
[hkaiser@celeritas ~]$ gcc --verbose Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ./configure --prefix=/usr/local/compilers/gcc-4.2.4 --with-mpfr=/usr/lib/mpfr --enable-languages=c,c++ Thread model: posix gcc version 4.2.4
2. Have you tried dlopening these libs with (RTLD_NOW | RTLD_GLOBAL)?
Yep, same picture. Regards Hartmut
-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
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost