← Back to team overview

yade-dev team mailing list archive

Re: Incomprehensible crash

 

In case of crash always look for the following (or similar, if abort()
is called)

#6  <signal handler called>

then the strack below has what functions were called in what order.

Second thing is message printed right before the crash:

yade-trunk:
/home/vaclav/yade/build-trunk/include/yade-trunk/yade/lib-multimethods/DynLibDispatcher.hpp:447:
bool DynLibDispatcher<BaseClass, Executor, ResultType, TList,
autoSymmetry>::locateMultivirtualFunctor2D(int&, int&,
boost::shared_ptr<typename Loki::TL::TypeAtNonStrict<typename
Loki::TL::Append<Loki::NullType, T>::Result, 0u,
Loki::NullType>::Result>&, boost::shared_ptr<typename
Loki::TL::TypeAtNonStrict<typename Loki::TL::Append<Loki::NullType,
T>::Result, 1u, Loki::NullType>::Result>&) [with BaseClass =
Loki::Typelist<GeometricalModel, Loki::Typelist<InteractingGeometry,
Loki::NullType> >, Executor = InteractingGeometryEngineUnit, ResultType
= void, TList = Loki::Typelist<const
boost::shared_ptr<GeometricalModel>&,
Loki::Typelist<boost::shared_ptr<InteractingGeometry>&,
Loki::Typelist<const Se3r&, Loki::Typelist<const Body*, Loki::NullType>
> > >, bool autoSymmetry = true]: Assertion `index1 >= 0 && (unsigned
int)( index1 ) < callBacks.size() && index2 >= 0 && (unsigned int)(
index2 ) < callBacks[index1].size()' failed.

(well, informative, right? Basically, the metaengine doesn't have a
callback for that particular class, if I understand correctly. Anyway,
shouldn't it throw an informative exception instead of asserting and
failing? That makes me look at the MetaEngine in a closer way...:

Interesting is the generated .xml file at that place
(Preprocessor('MembraneTest').generate('/tmp/a.xml'))

    <initializers _className_="InteractingGeometryMetaEngine"  label=""
functorNames="[]">
                <functorArguments size="0" />
    </initializers>

No functores? Why is this line commented out?

  //
interactingGeometryDispatcher->add("ef2_BshTube_BssSweptSphereLineSegment_makeBssSweptSphereLineSegment");

Re-enabling this line makes me run without crash :-)

PS. You really _want_ to use those ugly names of classes? OMG... at
least skip the _make part and write just _BssSweptSpheres..., no?







Follow ups

References