|
Boost : |
From: Gennadiy Rozental (gennadiy.rozental_at_[hidden])
Date: 2006-06-21 14:15:13
"Sean Huang" <huangsean_at_[hidden]> wrote in message
news:BAY102-DAV1177B755E23C045FE1092BA3870_at_phx.gbl...
> Here is the scenario:
> A test case implemented as a class and the class uses
> boost::serialization in the destructor to serialize some objects.
> On windows, with both VC7.1 and VC8, I would get access violations and
> runtime-error - pure virtual function call. Turned out it is because test
> cases are not destroyed until the unit test framework singleton instance
> goes away which happens only after the main returns. boost::serialization
> uses extensively function scope static objects and these objects are
> instantiated during program termination in this particular case. There are
> some issues AFAICS:
> 1. function-scope static objects deletion order
> 2. At least with MSVC, atexit is called when a function-scope static
> object
> is created. It seems that the implementation does not support calling
> atexit
> when doexit is running. I took a quick glance at the standard but did not
> find anything that mentions when atexit can be called.
>
> I was able to resolve the problem by forcing the deletion and recreation
> of
> the static unit test framework singleton object but I am not sure if there
> will be other consequences.
Above information does not give me a clear picture of what is going on.
Could you please post some example code, so I could comment more
intelligently.
Gennadiy
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk