[Rivet] Fwd: Fwd: Re: Small problem linking LCG libRivet to Gaudi algorithm in Gauss

Alex Grecu Alex.Grecu at cern.ch
Thu Oct 6 20:13:07 BST 2011


Dear all,

We're quite eager to use RIVET in the LHCb community (at least in the 
group that does MC generators studies). As the main developer of the 
Gaudi component that integrates libRivet into our simulation software, 
I'm being asked to release my component and I sort of cannot because of 
the issue that Anton and I discovered and patched. I forward or 
re-forward you the message below and I hope you can find some spare time 
to give us/me an answer whether you ran into similar problems with other 
collaboration frameworks.

Recently, I had a 2 and a half hours debugging session and discovered an 
interesting thing namely, that there seems to be no RTTI information for 
the LWH AIDA classes in the libRivet compiled by LCG (we use the 
software provided by GENSER at LHCb). It may be because of the way the 
AIDA interface is implemented (inlined and with virtual destructors) 
which makes the compiler strip those type_infos from the library. 
Unfortunately, the way I see it, there is no alternative, at the moment, 
but patching RIVET. Your input on this issue would be most valuable for 
me at this point so please reply!

Best regards,
Alex Grecu

-------- Original Message --------
Subject: 	Re: Small problem linking LCG libRivet to Gaudi algorithm in 
Gauss
Date: 	Wed, 7 Sep 2011 14:39:16 +0200
From: 	Anton Karneyeu <Anton.Karneyeu at cern.ch>
To: 	Rivet <rivet at projects.hepforge.org>
CC: 	Genser <genser-dev at cern.ch>



Hi all,

yesterday I met with Alex to see the origin of the crash.

Segfault happens at this line:


http://projects.hepforge.org/rivet/trac/browser/tags/rivet-1.6.0/src/Core/AnalysisHandler.cc#L269

if the type of *hobj is IProfile1D (and if the *hobj is IHistogram1D
then all three dynamic_cast work as expected).  The reason is not clear
for me - looks like compiler bug (gcc 4.3), but can be also due to
mismatch between g++ options used to build Rivet in genser repository
and g++ options to link with Rivet in LHCb software, or influence of LCG
AIDA implementation used in LHCb.

So, I prepare a workaround to avoid subsequent dynamic_casts if
preceding cast is successful:


https://svnweb.cern.ch/trac/GENSER/browser/GENSER3/pkgsrc/MCGenerators/rivet/tags/rivet-1_6_0_p1/patches/patch-aa

Rivet build with the patch situated here:


/afs/cern.ch/sw/lcg/external/MCGenerators_hepmc2.06.05/rivet/1.6.0.p1/x86_64-slc5-gcc43-opt

Alex confirmed the patched version works fine now with LHCb Rivet handler.

I am not sure the above patch is a best way to fix the problem and may
be there is a better way. Could you have a look?

Cheers,
Anton




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.hepforge.org/lists-archive/rivet/attachments/20111006/48ef8207/attachment.html>


More information about the Rivet mailing list