-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Use a lock to protect access to collection from TROOT::GetListOfCleanups #67
Conversation
…ups() The protection of the collection returned from TROOT::GetListOfCleanups() was insufficient since thread related crashes could still occur. This commit protects all uses except for those from the GUI.
unfortunately this is performance issue .. as this way of handling the problem basically serialize all destruction of object derived from TObject ... :( ... i.e. one need a performance read-write lock for a proper fix |
CMS is seeing a crash originating from this container. |
I am not surprised, this is a know problem. If the performance is acceptable for the CMS case, please use the patch. For the general case, we need more work on it. |
How many TObjects get marked at 'kMustCleanup'? It is only under that condition that the lock will be taken in the destructor. |
At the very least all objects associated with a TDirectory (including gROOT) and a TPad (most notably that mean histograms and trees). |
ping^1 |
I guess this relates to #596. Maybe it'd be worth rebasing this PR. |
Can one of the admins verify this patch? |
This patch will be superseded by work subsequent to #596 |
@pcanal does it incl. cms-sw@308daba ? |
Yes, this patch will (eventually) also be unnecessary (i.e. replaced by taking a read lock at this point that might be turned into a write lock as needed). |
Ok, shall we close it then? |
I will close this on another related PR when a proper replacement is uploaded. This will serve as a signal to the author to replace their temporary work-around. |
Hi @pcanal, perhaps we can close this one already since it is superseded by the RWlock PRs you have been working on? |
This is superseed by adding a thread-safe mode to some ROOT collection and updating the global lock to have a Read-Write behavior (and update RecursiveRemove and friends accordingly). |
The protection of the collection returned from TROOT::GetListOfCleanups()
was insufficient since thread related crashes could still occur. This
commit protects all uses except for those from the GUI.