Skip to content

ThreadPoolSvc: Bugfix/barrier fix

Charles Leggett requested to merge leggett/Gaudi:dev/ThreadPoolBarrier into master

(from Steve Farrell) see atlas/Gaudi!17 (merged)

This merge fixes a serious undefined behavior condition in ThreadPoolSvc introduced in the thread-tool-terminate merge. The boost::barrier was moved to a function local which could drop out of scope before workers returned from waiting. Now, the barrier is again a class member of the ThreadPoolSvc. Tests are successful. Additionally, I added a safety check in ThreadPoolSvc::terminateTool that returns FAILURE if the pool wasn't actually initialized.

Finally, I put the ThreadPoolSvc's raw pointer class members into unique_ptrs for automatic deletion.

Merge request reports

Loading