I can not load any script two times

Hello,
after I changed the ROOT version to the last(24.00) I can not load the same script two times:

root [0] .L lambda_fit_one1_histogram.C
root [1] .L lambda_fit_one1_histogram.C

*** Break *** segmentation violation
(no debugging symbols found)
Using host libthread_db library “/lib64/tls/libthread_db.so.1”.
Attaching to program: /proc/16288/exe, process 16288
(no debugging symbols found)…done.
[Thread debugging using libthread_db enabled]
[New Thread 4144592576 (LWP 16288)]
(no debugging symbols found)…done.
(no debugging symbols found)…done.
0xffffe410 in __kernel_vsyscall ()
#1 0x003434b3 in __waitpid_nocancel () from /lib/tls/libc.so.6
#2 0x002ec779 in do_system () from /lib/tls/libc.so.6
#3 0x0042b98d in system () from /lib/tls/libpthread.so.0
#4 0xf7b624bb in TUnixSystem::Exec () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#5 0xf7b68153 in TUnixSystem::StackTrace () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#6 0xf7b64b4e in TUnixSystem::DispatchSignals () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#7 0xf7b64bdc in SigHandler () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#8 0xf7b63e59 in sighandler () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#9
#10 0xf6ca69c6 in ?? ()
#11 0xf73d4577 in G__scratch_upto_work () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCint.so
#12 0xf73d4b1d in G__scratch_upto () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCint.so
#13 0xf7351ee3 in G__unloadfile () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCint.so
#14 0xf7397261 in G__reloadfile () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCint.so
#15 0xf739b100 in G__process_cmd () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCint.so
#16 0xf7b504b7 in TCint::ProcessLine () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#17 0xf7a840fe in TApplication::ProcessLine () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#18 0xf70cd6df in TRint::HandleTermInput () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libRint.so
#19 0xf70cbbb0 in TTermInputHandler::Notify () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libRint.so
#20 0xf70cdffe in TTermInputHandler::ReadNotify () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libRint.so
#21 0xf7b60e46 in TUnixSystem::CheckDescriptors () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#22 0xf7b6502c in TUnixSystem::DispatchOneEvent () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#23 0xf7ae07c4 in TSystem::InnerLoop () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#24 0xf7ae058b in TSystem::Run () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#25 0xf7a84166 in TApplication::Run () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libCore.so
#26 0xf70cc496 in TRint::Run () from /afs/cern.ch/sw/lcg/app/releases/ROOT/5.24.00/slc4_ia32_gcc34/root/lib/libRint.so
#27 0x08048d46 in main ()
Root > !!!Dictionary position not recovered because G__unloadfile() is used in a macro!!!
root [2]

What is wrong?

Regards
Oleg

Hi,

What is the content of your script?

Philippe.

OK,
I’ve found that this error messages occur only for scripts with headers,
like these:
#include <stdio.h>
#include
#include
#include
#include “TMinuit.h”
#include “TH1.h”
#include “TStyle.h”
#include “TH2.h”
#include “TH3.h”
#include “TProfile.h”
#include “TF1.h”
#include "TFile.h"
using namespace std;

and no messages for scripts without headers.

Often I have the script of such structure:

headers
int main(par1,par2,…) {
code
}

and I run it in two modes:
1)outside the ROOT I compile & link it and then run it as executable module
2)Inside the ROOT I
.L script.c
main(par1,par2,…)

It seems to run such script in ROOT I must delete the header lines?
What is the way to avoid such code change? :question:

Regards
Oleg

Hi,

I will check why this is crashing. In the meantime you can hide the header from CINT by using:

#ifndef __CINT__ #include <stdio.h> #include <iostream> .... #endif // __CINT__

Cheers,
Philippe