Problem compiling selector or using TDSet

Hello, I’m doing some test using proof. The configuration test that I’m using is composed by 3 workers, 1 of this is also used has mater, and I’m trying to read 3 files with a TTree.

The TTree is very simple, a single Branch containg a Float_t value, the is extracted random following a gaussian distribution.

The example that I’m using compose a TChain, that using TChain::SetProof() running the TChain::Process(“mySel.C”) the selector runs, using all nodes.

A first problem: I can execute the code only using the interpeter, if I try to compile the TSelector code the execution fails. The code is correct and if used without proof is compiled correctly.

The second issue happen always if I try to build a TDSet from the TChain. When Irun the Process() all seems to work but at the end the code is hang, while the gui said to me the all the events were processed. Why this happen? few time this happened using the TChain::Process(), but only rarely.

The most important issue is the first one, beacuse the compiled code is much fast with respect the interpreted code.

any suggestion?

Dear Volpig,

What are the error messages?
Could you please run the following after the failure

root [] p = TProof::Open("<master>")
root [] chain->SetProof()
root [] chain->Process("<selector>+")
root [] TProof::Mgr("<master>")->GetSessionLogs()->Save("*", "/tmp/session.logs")

and post the ‘/tmp/session.logs’ file?

It is likely that the second error is related to the first one.


Hello ganis,
about the first error the message that I receive is:

dlopen error: /cdf/home/volpig/test/proof/./ file too short Load Error: Failed to load Dynamic link library /cdf/home/volpig/test/proof/./ *** Interpreter error recovered *** Error in <TSelector::GetSelector>: file mySel.C+ does not have a valid class deriving from TSelector

this running:

chain->SetProof(); chain->Process("mySel.C+");

if I remove the ‘+’ all the process is executed withoud error.

About the second issue the main feature is that after that the process is apparently done I no more have the possibility to use the cint shell, as if the TDSet is waiting for something that is not yet arrived. I waited for few minutes but after I had to kill root by hand. Using the “PROOF Processing logs” GUI window I don’t see any message.

I’m using ROOT version 5.14/g on SL 4.

Ok, the main session is stack, so I opened another session, connected to the master and created the log file while the ROOT session that launched the test was hang. In attachment there is the log file that you asked to me.
session.txt (13.9 KB)


Can you check the size of /cdf/home/volpig/test/proof/./ ?
This message

usually happens when the file is empty, for whatever reason.

Also what happens if you do:

   root [] .L mySel.C++

From the log that you sent, you have a segv in the SlaveTerminate of your selector while doing THist::Add : what are you exactly doing there? Can you post the simple selector?


PS: if you can you should move to a more recent version of ROOT: PROOF is contineously evolving and there has been a lot of changes/ fixes since 5.14 …

The local compilation of the class code is ok, the final .so file size is 51k.

The mySel code is attached, there was a TH1::Add but I also removed it.

I cannot also move to a more recent version of PROOF because this is the the most recent version that CDF supports :slight_smile:
mySel.h (2.46 KB)
mySel.C (3.44 KB)


And still does not work, right?
But now you should get another error message in the logs.
Did you look at that?



Sorry for the delay in the answer. The log that I have sent you are in the version without the TH1::Add.

I also tried the same structure on a different configuration, without CDF software and ROOT 5.18/b and the script runs without any problem.

There is something that I can do to test that the problem is not hidden by some configuration option?


How many logs did you post? I’ve got only one and that was before you drop the TH1:Add .

Do you mean that you can run in compiled mode in this case?

Please post the last version of the logs, all your configuration files and the script defining the chain and running PROOF.
There may be something giving a hint of the problem.


Hi ganis,
in the last week I did some test, using the same macro and TSelector code in different hardware and network configuration.

The result was that PROOF doesn’t have any problem on the particular test. The only problem is when a try to use it at FNAL, where the error is noticed by the “weakref” messages. My guess is that the issue can be related with the particular configuration, in particular something with the binutils.