Re: big issues with state machine loading

[email protected] Mon, 10 Feb 2014 12:20:53 +0100
Newsgroups gmane.science.robotics.orocos.devel
Message-ID <[email protected]>
Selon S Roderick <[email protected]>:

> On Feb 9, 2014, at 04:35 , Thierry Bultel <[email protected]> wrote:
>
> > Hi all,
> >
> > We are currently evaluating orocos toolchain 2.7rc3
> > My configuration is :
> >
> > - boost-1.53.0
> > - gcc-4.7.3
> >
> > The test sample is the helloworld.cpp from the tutorials; here is the state
> machine script:
> >
> > StateMachine States {
> >
> >         initial state initState
> >         {
> >                 entry
> >                 {
> >                 }
> >
> >                 transition select Final
> >         }
> >         final state Final
> >         {
> >                 entry
> >                 {
> >                 }
> >
> > //
> >         }
> > }
> >
> > RootMachine  States sTates
> >
> >
> > I am testing on 2 target architectures, the first one is intel and the
> second, arm
> > The bug I am mentioning here occurs on the real targets, as well as with
> qemu user emulation.
> >
> > On intel, comments (both "//" and "/* ...*/" )in state machine are detected
> as errors:
> >
> > Hello [R]> scripting.loadStateMachines("statemachine.osd")
> > 6.129 [ Info   ][ScriptingService::loadStateMachine] Parsing file
> statemachine.osd
> > 6.247 [ ERROR  ][ScriptingService::loadStateMachine] statemachine.osd
> :Parse error at line 18: Syntactic error: Exptected ending '}' at end of
> state ( or could not find out what this line means ).
> >  = false
> >
> >
> > On arm, that directly leads to a SIGSEGV. I do not have a backtrace for
> now, unfortunately.
> >
> >
> > I would like to add that the bug is also reproducible with orocos-1.1x and
> boost-1.35, letting me think
> > that this could be due to the compiler version. Our investigations have
> failed to identity the cause,
> > and I wanted to try with latest orocos version before posting.
> >
> > Regards
> > Thierry
>
> We still use v1, and have learned not to mix comments and code on the same
> line. But /* ... */ and // comments work fine for us on x86.
>
> We have also seen some odd issues with gcc 4.7, and also gcc 4.6. We have
> restricted ourselves to using gcc 4.4 only, and that seems to work.
>
> HTH
> S

Thanks for your testimonial,

Downgrading our compiler is definitively -not- an option to us, because our
current version has been intensively tested, and above all,
supports the NEON fpu coprocessor.

Here is the backtrace on my IMX6 target (sorry, it is big):

#0  0x2ae18262 in void
boost::spirit::classic::impl::skipper_skip<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme>,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::strlit<char const*>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::difference<boost::spirit::classic::space_parser,
boost::spirit::classic::eol_parser> >,
boost::spirit::classic::functor_parser<RTT::scripting::eol_skip_functor> >,
boost::spirit::classic::scanner<boost::spirit::classic::position_iterator<__gnu_cxx::__normal_iterator<char*,
std::string>, boost::spirit::classic::file_position_base<std::string>,
boost::spirit::classic::nil_t>,
boost::spirit::classic::scanner_policies<boost::spirit::classic::skip_parser_iteration_policy<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme>,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::strlit<char const*>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::difference<boost::spirit::classic::space_parser,
boost::spirit::classic::eol_parser> >,
boost::spirit::classic::functor_parser<RTT::scripting::eol_skip_functor> >,
boost::spirit::classic::iteration_policy>, boost::spirit::classic::match_policy,
boost::spirit::classic::action_policy> >,
boost::spirit::classic::iteration_policy>(boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme>,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::strlit<char const*>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::difference<boost::spirit::classic::space_parser,
boost::spirit::classic::eol_parser> >,
boost::spirit::classic::functor_parser<RTT::scripting::eol_skip_functor> >
const&,
boost::spirit::classic::scanner<boost::spirit::classic::position_iterator<__gnu_cxx::__normal_iterator<char*,
std::string>, boost::spirit::classic::file_position_base<std::string>,
boost::spirit::classic::nil_t>,
boost::spirit::classic::scanner_policies<boost::spirit::classic::skip_parser_iteration_policy<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme>,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::alternative<boost::spirit::classic::eol_parser,
boost::spirit::classic::end_parser>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char
const*>,
boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>,
boost::spirit::classic::strlit<char const*>,
boost::spirit::classic::unary_parser_category,
boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >,
boost::spirit::classic::difference<boost::spirit::classic::space_parser,
boost::spirit::classic::eol_parser> >,
boost::spirit::classic::functor_parser<RTT::scripting::eol_skip_functor> >,
boost::spirit::classic::iteration_policy>, boost::spirit::classic::match_policy,
boost::spirit::classic::action_policy> > const&,
boost::spirit::classic::skipper_iteration_policy<boost::spirit::classic::iteration_policy>
const&) ()
   from /usr/lib/liborocos-ocl-taskbrowser-gnulinux.so.2.7.0
#1  0x2b2a97a6 in ?? () from
/usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#2  0x2b2a9844 in
RTT::scripting::StateGraphParser::parse(boost::spirit::classic::position_iterator<__gnu_cxx::__normal_iterator<char*,
std::string>, boost::spirit::classic::file_position_base<std::string>,
boost::spirit::classic::nil_t>&,
boost::spirit::classic::position_iterator<__gnu_cxx::__normal_iterator<char*,
std::string>, boost::spirit::classic::file_position_base<std::string>,
boost::spirit::classic::nil_t>) () from
/usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#3  0x2b2b0532 in RTT::scripting::Parser::parseStateMachine(std::string const&,
RTT::TaskContext*, std::string const&) () from
/usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#4  0x2b2b33ae in
RTT::scripting::ScriptingService::loadStateMachines(std::string const&,
std::string const&, bool) () from
/usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#5  0x2b2b15c4 in
RTT::scripting::ScriptingService::loadStateMachines(std::string const&, bool) ()
from /usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#6  0x2b2b11b2 in
RTT::scripting::ScriptingService::doLoadStateMachines(std::string const&) ()
from /usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#7  0x2b2b71f6 in
boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<boost::_bi::unspecified,
boost::_mfi::mf1<bool, RTT::scripting::ScriptingService, std::string const&>,
boost::_bi::list2<boost::_bi::value<RTT::scripting::ScriptingService*>,
boost::arg<1> > >, bool, std::string
const&>::invoke(boost::detail::function::function_buffer&, std::string const&)
()
   from /usr/lib/orocos/gnulinux/plugins/librtt-scripting-gnulinux.so.2.7.0
#8  0x2abbaa08 in boost::function1<bool, std::string
const&>::operator()(std::string const&) const () from
/usr/lib/liborocos-rtt-gnulinux.so.2.7
#9  0x2abbaa96 in bool RTT::internal::LocalOperationCallerImpl<bool (std::string
const&)>::call_impl<std::string const&>(std::string const&) () from
/usr/lib/liborocos-rtt-gnulinux.so.2.7
#10 0x2abb0092 in boost::fusion::result_of::invoke<bool
(RTT::base::OperationCallerBase<bool (std::string const&)>::*)(std::string
const&), boost::fusion::cons<RTT::base::OperationCallerBase<bool (std::string
const&)>*, boost::fusion::cons<std::string const&, boost::fusion::nil> >
const>::type boost::fusion::invoke<bool (RTT::base::OperationCallerBase<bool
(std::string const&)>::*)(std::string const&),
boost::fusion::cons<RTT::base::OperationCallerBase<bool (std::string const&)>*,
boost::fusion::cons<std::string const&, boost::fusion::nil> > >(bool
(RTT::base::OperationCallerBase<bool (std::string const&)>::*)(std::string
const&), boost::fusion::cons<RTT::base::OperationCallerBase<bool (std::string
const&)>*, boost::fusion::cons<std::string const&, boost::fusion::nil> > const&)
()
   from /usr/lib/liborocos-rtt-gnulinux.so.2.7
#11 0x2abc22b8 in void
RTT::internal::RStore<bool>::exec<boost::_bi::bind_t<bool, bool (*)(bool
(RTT::base::OperationCallerBase<bool (std::string const&)>::*)(std::string
const&), boost::fusion::cons<RTT::base::OperationCallerBase<bool (std::string
const&)>*, boost::fusion::cons<std::string const&, boost::fusion::nil> >
const&), boost::_bi::list2<boost::_bi::value<bool
(RTT::internal::InvokerBaseImpl<1, bool (std::string const&)>::*)(std::string
const&)>,
boost::_bi::value<boost::fusion::cons<RTT::base::OperationCallerBase<bool
(std::string const&)>*, boost::fusion::cons<std::string const&,
boost::fusion::nil> > > > > >(boost::_bi::bind_t<bool, bool (*)(bool
(RTT::base::OperationCallerBase<bool (std::string const&)>::*)(std::string
const&), boost::fusion::cons<RTT::base::OperationCallerBase<bool (std::string
const&)>*, boost::fusion::cons<std::string const&, boost::fusion::nil> >
const&), boost::_bi::list2<boost::_bi::value<bool
(RTT::internal::InvokerBaseImpl<1, bool (std::string const&)>::*)(std::string
const&)>, boos---Type <return> to continue, or q <return> to quit---
t::_bi::value<boost::fusion::cons<RTT::base::OperationCallerBase<bool
(std::string const&)>*, boost::fusion::cons<std::string const&,
boost::fusion::nil> > > > >) ()
   from /usr/lib/liborocos-rtt-gnulinux.so.2.7
#12 0x2abc2374 in RTT::internal::FusedMCallDataSource<bool (std::string
const&)>::evaluate() const () from /usr/lib/liborocos-rtt-gnulinux.so.2.7
#13 0x2ae0b08e in
OCL::TaskBrowser::doPrint(boost::intrusive_ptr<RTT::base::DataSourceBase>, bool)
() from /usr/lib/liborocos-ocl-taskbrowser-gnulinux.so.2.7.0
#14 0x2ae0b730 in OCL::TaskBrowser::printResult(RTT::base::DataSourceBase*,
bool) () from /usr/lib/liborocos-ocl-taskbrowser-gnulinux.so.2.7.0
#15 0x2ae0faa4 in OCL::TaskBrowser::evalCommand(std::string&) () from
/usr/lib/liborocos-ocl-taskbrowser-gnulinux.so.2.7.0
#16 0x2ae1231a in OCL::TaskBrowser::loop() () from
/usr/lib/liborocos-ocl-taskbrowser-gnulinux.so.2.7.0
#17 0x00019142 in ORO_main_impl(int, char**) ()
#18 0x00018d52 in main ()






-- 
Orocos-Dev mailing list
[email protected]
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev