Re: [ROOT] Strange assertion failure

From: Troy D. Straszheim (troy@ifh.de)
Date: Sun Jul 04 2004 - 07:19:27 MEST


Hi Philippe, Talk:

The last suggestion worked...  the assertion failure goes away if you
don't generate the dictionary (of course... the assertion was in the
dictionary).  Now something else has come up:

Fatal: fValueClass violated at line 131 of `cont/src/TEmulatedVectorProxy.cxx'

I'm attempting to Branch a class which contains a class that inherits
from TObject and vector<>.  I am using root from CVS.  Any thoughts?

Thanks,

Troy Straszheim



Philippe Canal <pcanal@fnal.gov> writes:

> Hi Troy,
>
> No knowing which version of ROOT you are using, I am not sure whether
> this is fixed yet or not.
>
> Anyway the work-around most likely to work (beside upgrading to the
> latest version :) ) is to add to your linkdef file:
>
>    #pragma link off class vector<I3OMGeo*,allocator<I3OMGeo*> >::iterator;
> or
>    #pragma link C++ class vector<I3OMGeo*,allocator<I3OMGeo*> >::iterator-;
>
> (One of two ought to work).
>
> Cheers,
> Philippe.
>
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Troy D. Straszheim
> Sent: Tuesday, June 29, 2004 3:30 PM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] Strange assertion failure
>
>
>
> Hi roottalk:
>i
> I have a strange assertion failure that I am not able to reproduce in
> a small example and therefore have to ask if anything looks familiar
> (for pointers on how to create a small example or find a workaround).
>
> This occurs when I build a dictionary using the -p flag to rootcint
> (which is necessary to get the boost libraries to compile.  However in
> this case I am not using the boost libraries).  I get the assertion
> failure (below) at runtime.  Without the -p flag, I do not get this
> assertion failure.  Is this perhaps a symption of (fingers crossed)
> some known bug?
>
> This vector<I3OMGeo*, allocator<I3OMGeo*> >::iterator is a
> typedef, from a template class:
>
> template <class ElementType>
> class STLVectorStoragePolicy  {
>
>  public:
>
>   typedef vector<ElementType>                           vector_type;
>   typedef typename vector_type::iterator                iterator;
>   typedef typename vector_type::const_iterator          const_iterator;
>   typedef typename vector_type::reverse_iterator        reverse_iterator;
>   typedef ElementType& 					reference;
>   typedef const ElementType& 				const_reference;
>
>  private:
>   
>   vector_type thevector;
>
>   // etc
> }
>
> So somewhere in the code is:
>
> STLVectorStoragePolicy<I3OMGeo*> some_instance;
>
> And the error comes up.  Any ideas?
>
> Thanks,
>
> Troy Straszheim
>
>
>
> Fatal: sizeof(::vector<I3OMGeo*,allocator<I3OMGeo*> >::iterator) == sizeof(ROOT::Shadow::vectorlEI3OMGeomUcOallocatorlEI3OMGeomUgRsPgR__iterator) violated at line 670 of `../Linux-i386/build/dataclasses/public/dataclasses/dataclassesDict.cxx'
> aborting
>  Generating stack trace...
>  0x41cafc54 in <unknown> from /home/troy/icetray/work/Linux-i386/lib/libdataclasses.so
>  0x41cb2c54 in <unknown> from /home/troy/icetray/work/Linux-i386/lib/libdataclasses.so
>  0x41cf5ef5 in <unknown> from /home/troy/icetray/work/Linux-i386/lib/libdataclasses.so
>  0x41b5646d in <unknown> from /home/troy/icetray/work/Linux-i386/lib/libdataclasses.so
>  0x4000aefe in <unknown> from /lib/ld-linux.so.2
>  0x4000afea in _dl_init + 0xaa from /lib/ld-linux.so.2
>  0x4137fd9e in <unknown> from /lib/libc.so.6
>  0x4000ad46 in _dl_catch_error + 0x76 from /lib/ld-linux.so.2
>  0x413801ef in _dl_open + 0x5f from /lib/libc.so.6
>  0x411459ab in <unknown> from /lib/libdl.so.2
>  0x4000ad46 in _dl_catch_error + 0x76 from /lib/ld-linux.so.2
>  0x41145286 in <unknown> from /lib/libdl.so.2
>  0x41145a02 in dlopen + 0x42 from /lib/libdl.so.2
>  0x4074ce8f in G__dlopen + 0x2c from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x4074d839 in G__shl_load + 0x7f from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x4070a02d in G__loadfile + 0x1453 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x40186b0b in TCint::Load(char const*, bool) + 0x5b from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x40153623 in TSystem::Load(char const*, char const*, bool) + 0x27d from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x401f9db1 in TUnixSystem::Load(char const*, char const*, bool) + 0x35 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x4030e325 in <unknown> from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x4070f990 in G__call_cppfunc + 0x2bd from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406fd95e in G__interpret_func + 0x754 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406d781c in G__getfunction + 0x164d from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x40777e8b in G__getstructmem + 0xa06 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x40770464 in G__getvariable + 0x5cd from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406ce182 in G__getitem + 0x710 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406cc93e in G__getexpr + 0x9733 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x4072882b in G__exec_function + 0x1f2 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x4072fc42 in G__exec_statement + 0x24fd from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406b23eb in G__exec_tempfile_core + 0x33e from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x406b268e in G__exec_tempfile + 0x31 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x407386f1 in G__process_cmd + 0x4acf from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCint.so
>  0x40186c82 in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) + 0xb4 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x40186dc3 in TCint::ProcessLineSynch(char const*, TInterpreter::EErrorCode*) + 0x4f from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x400f41ce in TApplication::ProcessFile(char const*, int*) + 0x930 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x400f3816 in TApplication::ProcessLine(char const*, bool, int*) + 0x54a from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libCore.so
>  0x41110a20 in TRint::Run(bool) + 0x1e2 from /home/troy/icetray/work/tools/Linux-i386/lib/root/lib/libRint.so
>  0x08048e34 in main + 0x90 from /home/troy/icetray/work/tools/Linux-i386/lib/root/bin/root.exe
>  0x4128e90c in __libc_start_main + 0xcc from /lib/libc.so.6
>  0x08048d01 in TApplicationImp::ShowMembers(TMemberInspector&, char*) + 0x39 from /home/troy/icetray/work/tools/Linux-i386/lib/root/bin/root.exe



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET