|
Boost : |
From: Sean Huang (huangsean_at_[hidden])
Date: 2006-06-19 21:07:24
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.
Thanks,
Sean
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk