I can reproduce the problem. If I do this:
time valgrind --suppressions=$ROOTSYS/etc/valgrind-root.supp --leak-check=full --log-file=valgrind.log root.exe -n -l
TTimer* t = new TTimer(";",100);
t->Start();
//Go for a coffee
delete t;
.q
I don’t get any memory leak but a huge number of “still reachable bytes”, which is the problem you might see. It increases with time. So it seems a problem of a function of cling called by the TTimer::Notify method. To give some numbers, if I don’t wait at all, then I get just 16Mb reachable bytes. If I wait half an hour with the timer running, I get 100Mb still reachable. So after 1 day, 4.4 Gb full and the swap starts to fill…
So, an easy and dirty workaround to your problem would be… if possible, to close ROOT and restart again. Anyway, ROOT developers should look at the report with the option --show-reachable=yes. The relevant part of it is posted below. I suggest you to fill a bug report at root.cern.ch/bugs
==4402== 25,903,360 bytes in 11,564 blocks are still reachable in loss record 4,250 of 4,250
==4402== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4402== by 0x7C33D9E: cling::IncrementalParser::beginTransaction(cling::CompilationOptions const&) (in /opt/root6/lib/libCling.so)
==4402== by 0x7C34BC5: cling::IncrementalParser::commitTransaction(llvm::PointerIntPair<cling::Transaction*, 2u, cling::IncrementalParser::EParseResult, llvm::PointerLikeTypeTraits<cling::Transaction*>, llvm::PointerIntPairInfo<cling::Transaction*, 2u, llvm::PointerLikeTypeTraits<cling::Transaction*> > >&) (in /opt/root6/lib/libCling.so)
==4402== by 0x7C37A55: cling::IncrementalParser::Compile(llvm::StringRef, cling::CompilationOptions const&) (in /opt/root6/lib/libCling.so)
==4402== by 0x7BE72BD: cling::Interpreter::EvaluateInternal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::CompilationOptions, cling::Value*, cling::Transaction**, unsigned long) (in /opt/root6/lib/libCling.so)
==4402== by 0x7BE766F: cling::Interpreter::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::Value*, cling::Transaction**) (in /opt/root6/lib/libCling.so)
==4402== by 0x7C707ED: cling::MetaProcessor::process(char const*, cling::Interpreter::CompilationResult&, cling::Value*) (in /opt/root6/lib/libCling.so)
==4402== by 0x7B7AE45: HandleInterpreterException(cling::MetaProcessor*, char const*, cling::Interpreter::CompilationResult&, cling::Value*) (TCling.cxx:1874)
==4402== by 0x7B8BCF9: TCling::ProcessLine(char const*, TInterpreter::EErrorCode*) (TCling.cxx:2040)
==4402== by 0x5265CA5: TApplication::ProcessLine(char const*, bool, int*) (TApplication.cxx:1005)
==4402== by 0x51B0630: TROOT::ProcessLine(char const*, int*) (TROOT.cxx:2178)
==4402== by 0x52763BC: TTimer::Notify() (TTimer.cxx:148)