Skip to content

Problem with messages in Motion Controller #2

Description

@loumakas

The following code runs fine:

hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "KImageExtractor");

/* Messages from Behavior */
//wm = _blk->in_nb<MotionWalkMessage>("MotionWalkMessage", "Behavior");
//if (hm == NULL) hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "Behavior");
//am = _blk->in_nb<MotionActionMessage>("MotionActionMessage", "Behavior");

/* Messages from Motion Controller */
wm = _blk->in_nb<MotionWalkMessage>("MotionWalkMessage", "MotionController");
if (hm == NULL) hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "MotionController");
am = _blk->in_nb<MotionActionMessage>("MotionActionMessage", "MotionController");

I comment out the first line (because the KImageExtractor does not run)

//hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "KImageExtractor");

/* Messages from Behavior */
//wm = _blk->in_nb<MotionWalkMessage>("MotionWalkMessage", "Behavior");
//if (hm == NULL) hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "Behavior");
//am = _blk->in_nb<MotionActionMessage>("MotionActionMessage", "Behavior");

/* Messages from Motion Controller */
wm = _blk->in_nb<MotionWalkMessage>("MotionWalkMessage", "MotionController");
if (hm == NULL) hm = _blk->in_nb<MotionHeadMessage>("MotionHeadMessage", "MotionController");
am = _blk->in_nb<MotionActionMessage>("MotionActionMessage", "MotionController");

and I get a segmentation fault. Here is a copy of the gdb output:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb4ebab70 (LWP 7076)]
0x02443e35 in std::string::compare(char const*) const () from /usr/lib/libstdc++.so.6
(gdb) bt
#0 0x02443e35 in std::string::compare(char const*) const () from /usr/lib/libstdc++.so.6
#1 0x009456e0 in bool std::operator==<char, std::char_traits, std::allocator >(std::basic_string<char, std::char_traits, std::allocator > const&, char const*) () from /home/lagoudakis/Desktop/Code/Nao/aldebaran-sdk/lib/libboost_serialization-mt-d.so
#2 0x043fd43b in MotionController::mglrun (this=0x815e068) at /home/lagoudakis/Desktop/Code/Monad/src/activities/MotionController/MotionController.cpp:201
#3 0x043fb314 in MotionController::Execute (this=0x815e068) at /home/lagoudakis/Desktop/Code/Monad/src/activities/MotionController/MotionController.cpp:69
#4 0x00538f24 in Agent::Execute (this=0x815df98) at /home/lagoudakis/Desktop/Code/Monad/src/./architecture/agent.h:64
#5 0x004e1469 in Thread::startHelper (this=0x815df98) at /home/lagoudakis/Desktop/Code/Monad/src/./hal/thread.h:46
#6 0x004e89b5 in boost::_mfi::mf0<void, Thread>::operator() (this=0x822b524, p=0x815df98) at /usr/include/boost/bind/mem_fn_template.hpp:49
#7 0x004e88ec in boost::_bi::list1boost::_bi::value<Thread* >::operator()<boost::_mfi::mf0<void, Thread>, boost::_bi::list0> (this=0x822b52c, f=...,

a=...) at /usr/include/boost/bind.hpp:232

#8 0x004e8850 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, Thread>, boost::_bi::list1boost::_bi::value<Thread* > >::operator() (this=0x822b524)

at /usr/include/boost/bind/bind_template.hpp:20

#9 0x004e8602 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, Thread>, boost::_bi::list1boost::_bi::value<Thread* > > >::run (this=0x822b468) at /usr/include/boost/thread/detail/thread.hpp:56
#10 0x00d66eb7 in thread_proxy (param=0x822b468) at /home/robocuper/AR/boost_1_38_0/libs/thread/src/pthread/thread.cpp:130
#11 0x00ef780e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#12 0x0267ea0e in clone () from /lib/tls/i686/cmov/libc.so.6

Note that line 201 is this one: if (hm->command() == "setHead") {

Why do I have to try to read messages from KImageExtractor, if I don't expect any messages from there?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions