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
Phase2TrackerClusterizer can not be a global::EDProducer #14334
Comments
A new Issue was created by @Dr15Jones (Chris Jones). @davidlange6, @smuzaffar, @Degano, @davidlt, @Dr15Jones can you please review it and eventually sign/assign? Thanks. cms-bot commands are list here #13029 |
Assign reconstruction |
Hi @Dr15Jones, |
One of the failures was workflow 106250.0 on step2: you can click on the Beware, threading problems are not guaranteed to reproduce themselves since they depend on exactly what each thread is doing at a given moment. |
Just to be clear, the problem is multiple threads can be modifying the member data Fortunately, the solution is simple, just switch to a stream EDProducer. A stream EDProducer gets multiple copies of the EDProducer made in the job but each copy is guaranteed to see one and only one event at a time and therefore doesn't have to worry about concurrency. |
I created a PR to fix the issue : #14366. |
Thanks for your prompt action, it is much appreciated. |
+1 fixed in #14366 (merged since a while now): changed to edm::stream::EDProducer |
This issue is fully signed and ready to be closed. |
The class Phase2TrackerClusterizer can not be a global EDProducer since it is not thread safe. The Threaded IB is crashing with
The problem is the class uses a pointer to a non-const object as a member data:
cmssw/RecoLocalTracker/SiPhase2Clusterizer/plugins/Phase2TrackerClusterizer.cc
Line 35 in 0397259
which allows the code to break const correctness in the call to
Phase2TrackerClusterizer::produce
.This code needs to be changed, probably to be a
stream::EProducer<>
instead.The text was updated successfully, but these errors were encountered: