Info symbols with Pythia found twice (v2)


ROOT Version: 6.18
Platform: CC7
Compiler: GCC 6.2


I would like to re-open this one: ROOT and Pythia8 Info symbol found twice

Unfortunately it does not seems like a possibility, so I am just going to create a new thread.

The error is quite simple.

In file included from /root/ship-log-keep/sw/slc7_x86-64/ROOT/master_FAIRSHIP-1/include/TMCManager.h:26:
/root/ship-log-keep/sw/slc7_x86-64/ROOT/master_FAIRSHIP-1/include/TMCParticleStatus.h:81:7: error: reference to 'Info' is ambiguous
      Info("Print", "Status of track");
      ^
/root/ship-log-keep/sw/BUILD/b61305e07edfb1f9a906335e2093ac409db3c4cc/ROOT/include/TError.h:58:13: note: candidate found by name lookup is 'Info'
extern void Info(const char *location, const char *msgfmt, ...)
            ^
/root/ship-log-keep/sw/slc7_x86-64/pythia/v8230-ship-1/include/Pythia8/Info.h:30:7: note: candidate found by name lookup is 'Pythia8::Info'
class Info {
      ^
Error in <TInterpreter::AutoParse>: Error parsing payload code for class TVirtualMC with content:

So we have both Pythia8 and ROOT that define the same symbol, and those symbols clash in the interpreter.

Are we the only one with this problem? Can it be fixed somehow?

The suggestions given in the previous thread do not seem to work.

I guess @Axel might help you as suggested in the thread you are referring to.

Yup that’s on us to fix. Can you open a Jira ticket please if you don’t mind? (If you do let me know and I will.)

Out of curiosity: why does clang even consider Pythia8::Info as an option? Is there a using namespace Pythia8 somewhere in the Pythia8 headers?!

Pythia8 8.2.43:

grep -r using /usr/include/Pythia8*|grep namespace
(...)
/usr/include/Pythia8Plugins/EvtGen.h:using namespace Pythia8;
(...)
/usr/include/Pythia8Plugins/PythonWrapper.h:using namespace Pythia8;
grep -r EvtGen.h /usr/include/Pythia8*|grep "#include"
(... nothing includes it ...)
grep -r PythonWrapper.h /usr/include/Pythia8*|grep "#include"
(... nothing includes it ...)

Open the ticket: https://sft.its.cern.ch/jira/browse/ROOT-10299

Eeeew! That’s just terrible. Thanks for doing the obvious, @Wile_E_Coyote !

Guys I don’t follow sorry!

It’s me doing something wrong?

It’s Pythia8 (I’ll contact them). And we’ll work around it, see https://github.com/root-project/root/commit/bba421940c2073430ac03126e8f41e334e014c36

1 Like

Very nice, thank you!

Will this be backported to v6.18.00 or we will need to upgrade?

@axel Note that they really like “using” in Pythia8 8.2.43:

grep -l -r "^[[:space:]]*using" /usr/include/Pythia8*

/usr/include/Pythia8/HIUserHooks.h
/usr/include/Pythia8/PythiaStdlib.h
/usr/include/Pythia8Plugins/EvtGen.h
/usr/include/Pythia8Plugins/LHAMadgraph.h
/usr/include/Pythia8Plugins/MixMax.h
/usr/include/Pythia8Plugins/ProgressLog.h
/usr/include/Pythia8Plugins/Pythia8Rivet.h
/usr/include/Pythia8Plugins/PythonWrapper.h
grep -r "^[[:space:]]*using[[:space:]]\?namespace" /usr/include/Pythia8*

/usr/include/Pythia8/HIUserHooks.h:using namespace HIUnits;
/usr/include/Pythia8Plugins/EvtGen.h:using namespace Pythia8;
/usr/include/Pythia8Plugins/LHAMadgraph.h:using namespace std;
/usr/include/Pythia8Plugins/ProgressLog.h:using namespace std;
/usr/include/Pythia8Plugins/Pythia8Rivet.h:using namespace std;
/usr/include/Pythia8Plugins/PythonWrapper.h:using namespace Pythia8;

And SHiP has a couple more on their side, too :frowning:

I can backport to v6.18 - but I’d like to have a confirmation that this commit does the trick! Could you check, @siscia ?

Axel.

@siscia told me this did it!

And: this is part of v6.18/04.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.