Problem 1380 - Memory leak caused by G4StackingMessenger
Summary: Memory leak caused by G4StackingMessenger
Status: RESOLVED FIXED
Alias: None
Product: Geant4
Classification: Unclassified
Component: event (show other problems)
Version: other
Hardware: All All
: P5 minor
Assignee: asai
URL:
Depends on:
Blocks:
 
Reported: 2012-11-08 19:56 CET by Matthew
Modified: 2012-12-04 23:35 CET (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description Matthew 2012-11-08 19:56:05 CET
G4StackingMessenger's destructor does not delete all of the objects that are created in the constructor. The one that is left out is verboseCmd. 

G4StackingMessenger::G4StackingMessenger(G4StackManager * fCont)
:fContainer(fCont)
{
  ...

  verboseCmd = new G4UIcmdWithAnInteger("/event/stack/verbose",this);
  
  ...

}

G4StackingMessenger::~G4StackingMessenger()
{
  delete statusCmd;
  delete clearCmd;
  delete stackDir;
  //need to add:
  //delete verboseCmd;
}

This causes the following memory leak (output from Valgrind)

==9625== 584 (108 direct, 476 indirect) bytes in 1 blocks are definitely lost in loss record 275 of 280
==9625==    at 0x402641D: operator new(unsigned int) (vg_replace_malloc.c:255)
==9625==    by 0x462171E: G4StackingMessenger::G4StackingMessenger(G4StackManager*) (G4StackingMessenger.cc:60)
==9625==    by 0x462073F: G4StackManager::G4StackManager() (G4StackManager.cc:43)
==9625==    by 0x45F3890: G4EventManager::G4EventManager() (G4EventManager.cc:64)
==9625==    by 0x45BFD71: G4RunManagerKernel::G4RunManagerKernel() (G4RunManagerKernel.cc:102)
==9625==    by 0x45B9E20: G4RunManager::G4RunManager() (G4RunManager.cc:85)

Adding the line:
delete verboseCmd;
to the destructor will fix this issue.
Comment 1 asai 2012-12-04 23:35:31 CET
Thanks for reporting this. The problem will be fixed at the next patch release.
Kind regards,
Makoto