diff --git a/src/libCom/timer/timerPrivate.h b/src/libCom/timer/timerPrivate.h index 900c1d1eb..8f0c90cd7 100644 --- a/src/libCom/timer/timerPrivate.h +++ b/src/libCom/timer/timerPrivate.h @@ -152,14 +152,10 @@ public: void show ( unsigned int level ) const; void release (); timerQueue & getTimerQueue (); - void * operator new ( size_t size ); - void operator delete ( void *pCadaver, size_t size ); protected: ~timerQueuePassive (); private: timerQueue queue; - static tsFreeList < class timerQueuePassive, 0x8 > freeList; - static epicsMutex freeListMutex; }; inline void * timer::operator new ( size_t size ) @@ -189,18 +185,6 @@ inline timerQueue & timerQueueActive::getTimerQueue () return this->queue; } -inline void * timerQueuePassive::operator new ( size_t size ) -{ - epicsAutoMutex locker ( timerQueuePassive::freeListMutex ); - return timerQueuePassive::freeList.allocate ( size ); -} - -inline void timerQueuePassive::operator delete ( void *pCadaver, size_t size ) -{ - epicsAutoMutex locker ( timerQueuePassive::freeListMutex ); - timerQueuePassive::freeList.release ( pCadaver, size ); -} - inline timerQueue & timerQueuePassive::getTimerQueue () { return this->queue; diff --git a/src/libCom/timer/timerQueuePassive.cpp b/src/libCom/timer/timerQueuePassive.cpp index 87a63d40c..99c8c55b4 100644 --- a/src/libCom/timer/timerQueuePassive.cpp +++ b/src/libCom/timer/timerQueuePassive.cpp @@ -28,12 +28,17 @@ * */ +// +// Note, a free list for this class is not currently used because of +// entanglements between the file scope free list destructor and a +// file scope fdManager destructor which is trying to call a +// destructor for a passive timer queue which is no longer valid +// in pool. +// + #define epicsExportSharedSymbols #include "timerPrivate.h" -tsFreeList < class timerQueuePassive, 0x8 > timerQueuePassive::freeList; -epicsMutex timerQueuePassive::freeListMutex; - epicsTimerQueuePassive::~epicsTimerQueuePassive () {} epicsTimerQueuePassive &epicsTimerQueuePassive::create ( epicsTimerQueueNotify ¬ify )