|
Boost Users : |
Subject: Re: [Boost-users] serialization1.36.0 extended_type_info exit issue(s)
From: Robert Ramey (ramey_at_[hidden])
Date: 2008-10-08 17:23:39
troy d. straszheim wrote:
> Jens Weller wrote:
>> Have you tested this also on SVN Version?
>
> Yeah, same errors. Though as I say it has turned out to be very hard
> to isolate.
Just to recap.
a) when an eti (extended_type_info) is created an entry containing its
address is added to a global registry.
b) when an eti record is destroyed, all entries in the global registry
which correspond to this same object (by matching address)
are erased.
c) The global registry consists of two collections.
d) The problem is occuring when when the eti is being destroyed
after the global registry is destroyed. This occurs when global static
objects are not destroyed in reverse order that they are created.
e) So I added a static boolean flag - is_destroyed to all singleton
objects - including the global eti registry. This static flag is
set by the destructor of the singleton.
f) Any time an eti record is destroyed, it checks the "is_destroyed"
flag of each global registry and skips the erase operation
if the global registry has been destroyed.
So - if this is not working for anyone, one of the following
must be true:
a) you don't have the lastest copy.(possible)
b) the code is multi-threading and has a race condition
after main() returns.(seems very unlikely to me)
c) my implemenation is flawed(possible - but that's why you testers
get the big bucks!)
So - which is it?
Robert Ramey
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net