# QEDLoader.C not working on AliDock

Hello!

I successfully build the O2 (aliBuild build O2 --defaults o2) using alidock on a Debian 10. Simulations with Pythia8 and boxgen are working fine, but simulations using QEDLoader generator with
o2-sim -n 5 -g extgen --extGenFile $O2_ROOT/share/Generators/external/QEDLoader.C

gives the following message bellow. This has been reproduced by others in my group when using alidock. On Ubuntu it works fine, but alidock is needed on a shared machine we use for simulations. Can you please help me solve this issue?

Thanks,
Lucas

Obs: Full logs can be found here:
https://cernbox.cern.ch/index.php/s/A8Fpw8U4mahMEcD

[INFO] Process 11566 EXITED WITH CODE 0 SIGNALED 1 SIGNAL 6
[FATAL] ABORTING DUE TO ABORT IN COMPONENT
For later analysis we write a core dump to core_dump_5136
Aborted                 (core dumped) 



In the serverlog file one finds the follwing:

Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState:
   Missing FileEntry for TGenQEDBg.h
   requested to autoload type TEpEmGen
Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState:
   Missing FileEntry for TGenQEDBg.h
   requested to autoload type TGenEpEmv1
Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState:
   Missing FileEntry for TGenQEDBg.h
   requested to autoload type TGenQEDBg
[e[01;36m19:54:12e[0m][e[01;32mINFOe[0m] 
Loading /home/alidock/.sw/slc7_x86-64/O2/v1.2.0-1/share/Generators/external/QEDepem.C

libTEPEMGEN dictionary payload:5:10: fatal error: 'TGenQEDBg.h' file not found
#include "TGenQEDBg.h"
         ^~~~~~~~~~~~~
Error in <TInterpreter::AutoParse>: Error parsing payload code for class TGenEpEmv1 with content:

#line 1 "libTEPEMGEN dictionary payload"


#define _BACKWARD_BACKWARD_WARNING_H
// Inline headers
#include "TGenQEDBg.h"
#include "TGenEpEmv1.h"
#include "TEpEmGen.h"
#include "TEcommon.h"

#undef  _BACKWARD_BACKWARD_WARNING_H

In file included from input_line_182:1:
/home/alidock/.sw/slc7_x86-64/O2/v1.2.0-1/share/Generators/external/QEDepem.C:27:20: error: allocation of incomplete type 'TGenEpEmv1'
  auto genBg = new TGenEpEmv1();
                   ^~~~~~~~~~
libTEPEMGEN dictionary forward declarations' payload:6:247: note: forward declaration of 'TGenEpEmv1'
class __attribute__((annotate(R"ATTRDUMP(Generator of single e+e- pair production in PbPb ultra-peripheral collisions)ATTRDUMP"))) __attribute__((annotate("$clingAutoload$TGenEpEmv1.h")))  __attribute__((annotate("$clingAutoload$TGenQEDBg.h")))  TGenEpEmv1;
                                                                                                                                                                                                                                                      ^
input_line_186:2:3: error: use of undeclared identifier 'QEDepem'
 (QEDepem())
  ^
Error in <HandleInterpreterException>: Error evaluating expression (QEDepem()).
Execution of your code was aborted.
Error in <TReentrantRWLock::WriteUnLock>: Write lock already released for 0x3072e08
[e[01;36m19:54:15e[0m][e[01;41mFATALe[0m] Failed to retrieve 'extgen': problem with configuration 
For later analysis we write a core dump to core_dump_5136
"

Hi @Lucas_L

I’ve just installed O2 on the alidock (on ubuntu 18.04, but it should not matter) and for me
shahoian@alidock-1000:~/tst$ o2-sim -n 5 -g extgen --extGenFile $O2_ROOT/share/Generators/external/QEDLoader.C
worked fine.
From your log it looks like the libTEPEMGEN.so is not loaded. Do you see AEGIS/v1.0-1 in the list of loaded packages when sourcing alienv?

I don’t know for sure. Did you mean this list?

Yes, I see AEGIS is there, though I don’t understand why it shows v1.0-54, with fresh install it should be AEGIS/v1.0-1
Can you enter to root and run from the command line

gSystem->Load("libTEPEMGEN.so")
.class TGenEpEmv1
auto genBg = new TGenEpEmv1()
genBg->Init()

and paste the output here?

Here it is:

root [0] gSystem->Load(“libTEPEMGEN.so”)
Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState: Missing FileEntry for TGenQEDBg.h requested to autoload type TEpEmGen Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState: Missing FileEntry for TGenQEDBg.h requested to autoload type TGenEpEmv1 Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState: Missing FileEntry for TGenQEDBg.h requested to autoload type TGenQEDBg (int) 0

root [1] .class TGenEpEmv1
Error in <TInterpreter::AutoParse>: Error parsing payload code for class TGenEpEmv1 with content: #line 1 "libTEPEMGEN dictionary payload" #define _BACKWARD_BACKWARD_WARNING_H // Inline headers #include "TGenQEDBg.h" #include "TGenEpEmv1.h" #include "TEpEmGen.h" #include "TEcommon.h" #undef _BACKWARD_BACKWARD_WARNING_H Class TGenEpEmv1 not found

root [2] auto genBg = new TGenEpEmv1()
ROOT_prompt_2:1:18: error: allocation of incomplete type 'TGenEpEmv1' auto genBg = new TGenEpEmv1() ^~~~~~~~~~ libTEPEMGEN dictionary forward declarations' payload:6:247: note: forward declaration of 'TGenEpEmv1' ...__attribute__((annotate("$clingAutoload$TGenQEDBg.h"))) TGenEpEmv1; ^

root [3] genBg->Init()
input_line_111:2:3: error: use of undeclared identifier 'genBg' (genBg->Init()) ^ Error in <HandleInterpreterException>: Error evaluating expression (genBg->Init()). Execution of your code was aborted.

Thanks, the root autoloader seems not to find the headers and actually, I see that they are not installed by the AEGIS package. I’ve opened a PR but it will take some time.
Still I don’t understand why it works for me, both with ubuntu native build (where I have the AEGIS as development package) and an alidock.
Could you try to install it on your alidock as a dev. package? Just do in your directory containing alidist:

git clone https://github.com/AliceO2Group/AEGIS.git
aliBuild build O2 --defaults o2

Thanks for the help!

In the meantime I updated alidist and O2, which were about 1 week old. Now it is breaking when Building CMake, so I cannot test AEGIS.git as a dev package.

I think I will start from a clean install.

@pezzi was experiencing the same issue on alidock, but managed to resolve updating O2 and alidist.

Hi!

I did a clean install, but the issues with CMake remains.
In the end of the main log file there is this:
Error when bootstrapping CMake: Problem while running initial CMake

and in all files there is this warning in several lines:
warning: clock skew detect.

Unfortunately I couldn’t make much of it.

The log files can be found here:
https://cernbox.cern.ch/index.php/s/Zcjew2br73XAvOc

Thanks in advance.

Dear Lucas,
I had the very same error while compiling O2 on a NFS-mounted area. CMake is failing a test on C++17 option in a weird way (I must say I don’t remember exactly where the test is performed). The checker compiles a test program, as it usually does; the compilation is perfectly successful BUT there is the “clock screwed” warning. Then the checker tests whether there was any compilation warning message, it finds the clock warning and, as it is configured to treat warnings as errors, decides that your CC compiler does not support the C++17 feature and fails. So all in all it is not a real compiler error, but it’s due to the clock screwed warning.
I solved the problem by properly synchronizing my local machine to the NFS server time (actually I set it slightly in advance): as soon as I got no more clock warning, CMake compiled as a charm.
Hope this helps. Good luck.
Mario

Hello, Ruben and Mario
Unfortunately, since we use a shared machine for simulations, I couldn’t synchronize the clocks. Instead, with the help of Pezzi, I managed to rebuild a previous version of O2. It then returned to the original issue, which could be solved by installing AEGIS as a dev. package, as Ruben had suggested.

Thank you so much for your help.

Regards,
Lucas.

Hi @Lucas_L

Actually, I’ve added the installation of the include to AEGIS recipes. Anyway, as far as I understand, now it works?

Cheers,
Ruben

Hi,
sorry for the delay.
I’m afraid that by updating Alidist it may cause the “error” when compiling Cmake, so I’m avoiding that for now.

But yes, now it’s working! Many thanks!