Loading same macro twice leads to crash

Hi,

I have a simple ROOT macro as below:

#include <TString.h>
#include <TSystem.h>

void loadPack()
{

  const char *Is_RC_Loaded = gSystem->Getenv ("Is_RC_Loaded");
  if (Is_RC_Loaded != 0)
     return;

  TString ROOTCOREBIN = gSystem->Getenv ("ROOTCOREBIN");
  if ( ROOTCOREBIN.IsNull() )
  {
    throw std::string ("ROOTCOREBIN not set, please set up RootCore");
  }
  TString bin = ROOTCOREBIN;

  gSystem->Setenv("Is_RC_Loaded","yes");
}

If I run the macro twice in ROOT 6, ROOT will crash.

While there is no crash in running the above macro twice in ROOT 5.

Any idea?

Thanks

–Shuwei

Hi Shuwei,

thanks for the report.
I can reproduce the problem with the 6.02 series. On the other hand this unloading issue is fixed starting with the 6.04 series.
I opened a ticket about this issue: sft.its.cern.ch/jira/browse/ROOT-7674
I’ll attach to it the right priority based on your plans to move to 6.04: I think this is the direction Atlas is taking.

Cheers,
Danilo

Hi Shuwei,

We have made significant changes in the unloading and error recovery code. Those changes are substantial are already in v6.04 and 6.06 release. Since this is so much changes, we have decided so far to not port them to v6.02. If you are unable to use v6.04/08 or the upcoming 6.06 (master for now), please let us know why.

Thanks,
Philippe.

Hi Shuwei,

If this is still an issue, please let us know. In the meantime, I will close the ticket as it is fixed in two production releases.

Cheers,
Philippe.