Index: /trunk/Mars/mbase/MEvtLoop.cc
===================================================================
--- /trunk/Mars/mbase/MEvtLoop.cc	(revision 19759)
+++ /trunk/Mars/mbase/MEvtLoop.cc	(revision 19760)
@@ -79,4 +79,5 @@
 #include <TDatime.h>        // TDatime
 #include <TSystem.h>        // gSystem
+#include <THashList.h>
 #include <TStopwatch.h>
 #include <TGProgressBar.h>  
@@ -123,4 +124,19 @@
         fParList = 0;
     }
+}
+
+void MEvtLoop::SetName(const char *name)
+{
+    MParContainer::SetName(name);
+
+    // From the documentation of THashList::THashList
+    //
+    // WARNING !!!
+    // If the name of an object in the HashList is modified, The hashlist
+    // must be Rehashed
+    //
+    auto table = dynamic_cast<THashList*>(gROOT->GetListOfCleanups());
+    if (table)
+        table->Rehash(THashList::kInitHashTableCapacity);
 }
 
Index: /trunk/Mars/mbase/MEvtLoop.h
===================================================================
--- /trunk/Mars/mbase/MEvtLoop.h	(revision 19759)
+++ /trunk/Mars/mbase/MEvtLoop.h	(revision 19760)
@@ -51,4 +51,6 @@
     virtual ~MEvtLoop();
 
+    void       SetName(const char *name);
+
     void       SetParList(MParList *p);
     MParList  *GetParList() const  { return fParList; }
Index: /trunk/Mars/mbase/MStatusArray.cc
===================================================================
--- /trunk/Mars/mbase/MStatusArray.cc	(revision 19759)
+++ /trunk/Mars/mbase/MStatusArray.cc	(revision 19760)
@@ -52,4 +52,6 @@
 #include <TPaveText.h>        // For the TPaveText workaround
 
+#include <THashList.h>
+
 #include "MLog.h"
 #include "MLogManip.h"
@@ -78,4 +80,19 @@
 static void *ptr = 0;
 #endif
+
+void MStatusArray::SetName(const char *name)
+{
+    TObjArray::SetName(name);
+
+    // From the documentation of THashList::THashList
+    //
+    // WARNING !!!
+    // If the name of an object in the HashList is modified, The hashlist
+    // must be Rehashed
+    //
+    auto table = dynamic_cast<THashList*>(gROOT->GetListOfCleanups());
+    if (table)
+        table->Rehash(THashList::kInitHashTableCapacity);
+}
 
 // --------------------------------------------------------------------------
Index: /trunk/Mars/mbase/MStatusArray.h
===================================================================
--- /trunk/Mars/mbase/MStatusArray.h	(revision 19759)
+++ /trunk/Mars/mbase/MStatusArray.h	(revision 19760)
@@ -33,4 +33,6 @@
     MStatusArray(const MStatusDisplay &d);
     ~MStatusArray();
+
+    void SetName(const char *name);
 
     TObject *DisplayIn(Option_t *o=0) const;         // *MENU*
Index: /trunk/Mars/mdata/MDataPhrase.cc
===================================================================
--- /trunk/Mars/mdata/MDataPhrase.cc	(revision 19759)
+++ /trunk/Mars/mdata/MDataPhrase.cc	(revision 19760)
@@ -115,4 +115,5 @@
 #include <TPRegexp.h>
 #include <TFormula.h>
+#include <THashList.h>
 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,26,00)
 #if ROOT_VERSION_CODE < ROOT_VERSION(6,00,00)
@@ -533,4 +534,32 @@
 }
 
+void MDataPhrase::SetName(const char *name)
+{
+    MData::SetName(name);
+
+    // Some code produces crashed with root 6 (6.14 and 6.18 tested)
+    //
+    //    MParameterCalc calc("MCorsikaEvtHeader.fZd");
+    //    MContinue cont("MPhotonEvent.GetNumPhotons<2");
+    //    MTaskList tasks;
+    //    tasks.AddToList(&calc);
+    //    tasks.AddToList(&cont);
+    //    MEnv env("ceres.rc");
+    //    if (!tasks.ReadEnv(env, "", kFALSE))
+    //        return kFALSE;
+    //
+
+    // From the documentation of THashList::THashList
+    //
+    // WARNING !!!
+    // If the name of an object in the HashList is modified, The hashlist
+    // must be Rehashed
+    //
+    auto table = dynamic_cast<THashList*>(gROOT->GetListOfCleanups());
+    if (table)
+        table->Rehash(THashList::kInitHashTableCapacity);
+}
+
+
 // --------------------------------------------------------------------------
 //
Index: /trunk/Mars/mdata/MDataPhrase.h
===================================================================
--- /trunk/Mars/mdata/MDataPhrase.h	(revision 19759)
+++ /trunk/Mars/mdata/MDataPhrase.h	(revision 19760)
@@ -37,4 +37,5 @@
     void     Clear(Option_t *o="");
     void     RecursiveRemove(TObject *obj);
+    void     SetName(const char *name);
 
     // MParContainer
Index: /trunk/Mars/mfileio/MWriteRootFile.cc
===================================================================
--- /trunk/Mars/mfileio/MWriteRootFile.cc	(revision 19759)
+++ /trunk/Mars/mfileio/MWriteRootFile.cc	(revision 19760)
@@ -66,4 +66,5 @@
 #include <TTree.h>
 #include <TPRegexp.h>
+#include <THashList.h>
 
 #include "MLog.h"
@@ -324,4 +325,19 @@
 {
     Close();
+}
+
+void MWriteRootFile::SetName(const char *name)
+{
+    MWriteFile::SetName(name);
+
+    // From the documentation of THashList::THashList
+    //
+    // WARNING !!!
+    // If the name of an object in the HashList is modified, The hashlist
+    // must be Rehashed
+    //
+    auto table = dynamic_cast<THashList*>(gROOT->GetListOfCleanups());
+    if (table)
+        table->Rehash(THashList::kInitHashTableCapacity);
 }
 
Index: /trunk/Mars/mfileio/MWriteRootFile.h
===================================================================
--- /trunk/Mars/mfileio/MWriteRootFile.h	(revision 19759)
+++ /trunk/Mars/mfileio/MWriteRootFile.h	(revision 19760)
@@ -130,4 +130,6 @@
     ~MWriteRootFile();
 
+    void SetName(const char *name);
+
     void AddContainer(const char *cname,   const char *tname=NULL, Bool_t must=kTRUE, Long64_t max=-1);
     void AddContainer(MParContainer *cont, const char *tname=NULL, Bool_t must=kTRUE, Long64_t max=-1);
