How did TH1::AddDirectory(kFALSE) help?
Furthermore,
TFile *file = TFile::Open(filename.c_str());
yields segment fault whereas
file = new TFile( filename.c_str() , “read”);
does not, if the root file exists. The constructor gives me a chance to check for null pointer before crashing.