Open
Description
Sometimes the service crash due to pointer exception in function TimerQueue::remove because entry->m_prev and entry->m_next are null pointers.
else {
assert( entry->m_prev ) ;
assert( entry->m_next ) ;
entry->m_prev->m_next = entry->m_next ;
entry->m_next->m_prev = entry->m_prev ;
}
I think that something is wrong in the function doTimer. In the following code when !expired, set both links prev and next of ptr to NULL
and after, makes this ptr = ptr->m_next so original ptr is orphan. This produce that when remove is invoked with this ptr, application crash
if( !expired ) {
expired = tailExpired = ptr ;
ptr->m_prev = ptr->m_next = NULL ;
}
else {
tailExpired->m_next = ptr ;
ptr->m_prev = tailExpired ;
tailExpired = ptr ;
}
ptr = ptr->m_next ;
Metadata
Metadata
Assignees
Labels
No labels