Il y a une autre fuite de mémoire lorsque la fonction KVMultiDetArray ::SetCalibrators() est appelée, voir teste suivant:
rroot [35] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics root [36] gIndra->UpdateArray() ^[[A^[[A^[[AInfo in <KVINDRA::SetIdentifications>: No active identifications Info in <KVINDRA::SetDetectorThicknesses>: File DetectorThicknesses.dat not found root [37] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics Warning in <KVClassMonitor::Check>: KVLightEnergyCsI +648 (3240 --> 3888) Warning in <KVClassMonitor::Check>: KVACQParam +23 (2022 --> 2045) : : root [38] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics root [39] KVDetector *det=NULL root [40] TIter next(gIndra->GetListOfCsI()) root [41] while(det=(KVDetector*)next()) det->SetCalibrators() root [42] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics Warning in <KVClassMonitor::Check>: KVLightEnergyCsI +648 (3888 --> 4536) La fonction KVMultiDetArray ::UpdateArray() appelle KVMultiDetArray ::SetCalibrators() qui appelle à son tour la fonction SetCalibrators() de tous les détecteurs. Dans la méthode KVCsI ::SetCalibrators() il y a une duplication des KVCalibrator's contrairement à la même méthode des autres détecteurs. Problème évité par exemple avec la condition : if(!AddCalibrator(c)) delete c; dans KVSilicon ::SetCalibrators() . -- You received this bug notification because you are a member of KaliVeda Development Team, which is subscribed to KaliVeda. https://bugs.launchpad.net/bugs/1047241 Title: Fuite de mémoire dans KVINDRA Status in KaliVeda data analysis framework: New Bug description: J'ai remarqué une petite fuite de mémoire qui provenant des KVACQParam's définis dans la méthode KVINDRA::SetArrayACQParams(). Ces KVACQParam's n'étant pas associés à un détecteur, il ne sont pas détruit lorsque le KVINDRA est détruit. Voir le test suivant: root [0] KVClassMonitor cm : : root [9] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics root [10] new KVINDRA root [11] gIndra->Build() root [12] delete gIndra root [13] cm.Check() Info in <KVClassMonitor::Check>: Checking class instance statistics Warning in <KVClassMonitor::Check>: KVACQParam +23 (23 --> 46) de plus à chaque appel de la méthode KVINDRA::UpdateArray(), ces 23 KVACQParam's sont perdus dans la nature. Je conçois que cette perte de mémoire est mineure car on ne travaille jamais avec plusieurs INDRA en même temps, mais bon peut une prochaine manipe qui sait! Je pense qu'il faudrait que les 3 KVACQParameter's associés au KVINDRATriggerInfo soient détruits dans le destructeur de KVINDRATriggerInfo. Pour les 20 autres, il faudrait peut être les charger dans une donnée membre de KVMultiDetArray, un KVSeqCollection propriétaire, qui serait détruit dans le destructeur de KVMultiDetArray. Et finalement, dans la méthode KVINDRA::SetArrayACQParams ne créer les ACQParameters d'INDRA seulement si ce KVSeqCollection est vide et que KVINDRATriggerInfo est vide. To manage notifications about this bug go to: https://bugs.launchpad.net/kaliveda/+bug/1047241/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~kaliveda-dev Post to : [email protected] Unsubscribe : https://launchpad.net/~kaliveda-dev More help : https://help.launchpad.net/ListHelp

