You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This destructor sometimes is called concurrently with existing Service::ExistenceGuard object in another thread
Service::~Service()
{
removeFromAllServices();
delete svc\_trace\_manager;
svc\_trace\_manager = NULL;
if \(svc\_current\_guard\)
\{
svc\_current\_guard\-\>release\(\);
\}
}
Variable svc_current_guard is not null exactly in such moment. But after check another thread with ExistenceGuard can continue its work and ExistenceGuard object will be destroyed and svc_current_guard will be released. In this case ~Service will try to leave svc->svc_existence_lock the second time which leads to abort.
Submitted by: @romansimakov
This destructor sometimes is called concurrently with existing Service::ExistenceGuard object in another thread
Service::~Service()
{
removeFromAllServices();
}
Variable svc_current_guard is not null exactly in such moment. But after check another thread with ExistenceGuard can continue its work and ExistenceGuard object will be destroyed and svc_current_guard will be released. In this case ~Service will try to leave svc->svc_existence_lock the second time which leads to abort.
Commits: cb73693 a98e565 FirebirdSQL/fbt-repository@cbe27b4 FirebirdSQL/fbt-repository@ec4bc87
The text was updated successfully, but these errors were encountered: