Dear ROOTers,
I have an application that looks at a TFile that is being updated by a different process. I open the file using
f = new TFile(filename,“READ”)
look at the last entry in the the TTree in the file, then do
f->Close();
delete f;
before I finish with it.
The file itself is a symlink to a ROOT file that is both being regularly updated and replaced by our DAQ monitoring system.
However, after doing this repeatedly for a week, the job crashes with “too many open files”, failing to open file.
Some other symptoms:
- looking through gROOT->GetListOfFiles() shows only one copy of the open file
- looking at lsof shows many many copies of that file still open (i.e. assigned a file descriptor that was not closed).
Is there some way in which ROOT may be hanging onto the file descriptor even after the TFile has been closed?
–Nathaniel