mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-16 06:47:14 +02:00
extensive debugging
This commit is contained in:
@ -113,11 +113,18 @@ class threadedAnalogDetector {
|
||||
|
||||
virtual ~threadedAnalogDetector() {
|
||||
|
||||
std::cout << "#### Debug: Destructing threadedAnalogDetector! ####" << std::endl;
|
||||
|
||||
StopThread();
|
||||
|
||||
delete fifoFree;
|
||||
delete fifoData;
|
||||
delete det; // Call destructor for singlePhotonDetector
|
||||
if (fifoFree) { delete fifoFree; fifoFree = nullptr; }
|
||||
if (fifoData) { delete fifoData; fifoData = nullptr; }
|
||||
if (det) {
|
||||
std::cout << "#### Debug: Deleting threadedAnalogDetector member det at " << det << " ####" << std::endl;
|
||||
delete det; // Call destructor for singlePhotonDetector
|
||||
std::cout << "#### Debug: Deleted threadedAnalogDetector member det! ####" << std::endl;
|
||||
det = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns true if the thread was successfully started, false if there was
|
||||
@ -356,11 +363,14 @@ class multiThreadedAnalogDetector {
|
||||
*/
|
||||
|
||||
// Create separate detectorObjects for each SC (each owns its mutex)
|
||||
std::cout << "#### Debug: Constructing vector of analogDetector objects! ####" << std::endl;
|
||||
std::vector< analogDetector<uint16_t>* > sc_detectors(nSC, nullptr);
|
||||
sc_detectors[0] = d; // First storage cell uses the given detector
|
||||
std::cout << "#### Debug: Copied analogDetector object for storage cell 0! ####" << std::endl;
|
||||
|
||||
for (int sc = 1; sc < nSC; ++sc) {
|
||||
sc_detectors[sc] = d->Copy(); // Ensure unique mutex for each SC
|
||||
std::cout << "#### Debug: Copied analogDetector object for storage cell " << sc << "! ####" << std::endl;
|
||||
}
|
||||
|
||||
// Distribute threads among storage cells
|
||||
@ -409,7 +419,7 @@ class multiThreadedAnalogDetector {
|
||||
}
|
||||
|
||||
virtual ~multiThreadedAnalogDetector() {
|
||||
//std::cout << "Destructing multiThreadedAnalogDetector..." << std::endl;
|
||||
std::cout << "#### Debug: Destructing multiThreadedAnalogDetector! ####" << std::endl;
|
||||
//StopThreads(); // Superfluous, leads to double delete
|
||||
|
||||
/* Reverse loop for destruction.
|
||||
@ -417,8 +427,10 @@ class multiThreadedAnalogDetector {
|
||||
* (ensure shared mutex is deleted last).
|
||||
* Optional solution: reference counting (safer but more complex) */
|
||||
for (int i = nThreads - 1; i >= 0; --i) {
|
||||
//std::cout << "Deleting dets[" << i << "]" << std::endl;
|
||||
std::cout << "#### Debug: Deleting multiThreadedAnalogDetector member dets[" << i << "] at " << dets[i] << " ####" << std::endl;
|
||||
delete dets[i]; //StopThread() called by each ~threadedAnalogDetector()
|
||||
std::cout << "#### Debug: Deleted multiThreadedAnalogDetector member dets [" << i << "]! ####" << std::endl;
|
||||
dets[i] = nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user