Commit f90a80d9 authored by Ben Boeckel's avatar Ben Boeckel

vtkTimeStamp: add a notice for future linker-ghost chasing souls

parent 5481d80b
......@@ -29,6 +29,27 @@ vtkTimeStamp* vtkTimeStamp::New()
//-------------------------------------------------------------------------
void vtkTimeStamp::Modified()
{
// Here because of a static destruction error? You're not the first. After
// discussion of the tradeoffs, the cost of adding a Schwarz counter on this
// static to ensure it gets destructed is unlikely to be worth the cost over
// just leaking it.
//
// Solutions and their tradeoffs:
//
// - Schwarz counter: each VTK class now has a static initializer function
// that increments and integer. This cannot be inlined or optimized away.
// Adds latency to ParaView startup.
// - Separate library for this static. This adds another library to VTK
// which are already legion. It could not be folded into a kit because
// that would bring you back to the same problem you have today.
// - Leak a heap allocation for it. It's 24 bytes, leaked exactly once, and
// is easily suppressed in Valgrind.
//
// The last solution has been decided to have the smallest downside of these.
//
// static const vtkAtomicUIntXX* GlobalTimeStamp = new vtkAtomicUIntXX(0);
//
// Good luck!
#if defined(VTK_USE_64BIT_TIMESTAMPS) || VTK_SIZEOF_VOID_P == 8
static vtkAtomicUInt64 GlobalTimeStamp(0);
#else
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment