I have a dext that creates a periodic timer on its own dispatch queue. The callback is declared as follows:
virtual void HandleTimer( OSAction *action, uint64_t time ) TYPE(IOTimerDispatchSource::TimerOccurred);
The timer is allocated as follows:
CreateActionHandleTimer( size, &ivars->TimerHandler );
IODispatchQueue::Create( "TimerQueue", 0, 0, &ivars->TimerDispatchQueue );
IOTimerDispatchSource::Create( ivars->TimerDispatchQueue, &ivars->TimerDispatchSrc );
I can start up the timer and it works just fine. However, in my Stop() method, when trying to shut the timer down, I get an assertion in OSAction::Cancel() for TimerHandler:
Assertion failed: (queue), function Cancel, file uioserver.cpp, line 4401.
What does this assertion indicate or is the source code available? If so, where? I'm using macOS 15.5.
Note I am attempting to cancel the handler after the dispatch source and queue are canceled and the cleanup methods have been called (which is working). But, cancelling TimerHandler first also asserts.
2
0
124