Issue Details (XML | Word | Printable)

Key: CORE-4303
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Alexander Peshkov
Reporter: Roman Simakov
Votes: 0
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Possible races while Service destruction

Created: 24/Dec/13 12:21 PM   Updated: 29/May/16 10:30 PM
Component/s: Engine
Affects Version/s: 2.5.2 Update 1, 3.0 Alpha 1, 3.0 Alpha 2, 2.5.3
Fix Version/s: 2.5.3, 3.0 Beta 1

QA Status: Cannot be tested


 Description  « Hide
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.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
There are no subversion log entries for this issue yet.