Hi,
I have to add that the problem seems to appear only when I use our own
component connection code. Manual connection in the system editor works.
Could you maybe provide some example code for corba port connection? In
the examples I could only find example code for data port connection.
Thanks,
Steffen Wittmeier
On 04/16/2010 04:53 PM, Steffen Wittmeier wrote:
> Hi,
>
> I receive a seg-fault when calling cleanupComponents(). The problem only
> occurs in the following setups (see also attached screenshot).
>
> If component A (here LogViewer) is destructed by calling exit() on the
> component and cleanupComponents() on the manager (somehow
> cleanupComponent(rtc) does not call the destructor?) and this component
> A is connected to a port of component B (LogManager) which is turn
> connected to a component C (EcceosModel) I receive the seg-fault.
>
> In contrast, if I remove the connection between component B and C and
> call exit() on component A, the application exits normally.
>
> I attached a backtrace of the seg-fault. You can see that I am calling
> cleanupComponents() that leads to the destructor call of the PortProfile
> which causes the error.
>
> Is this some internal error where you could provide a fix for? As I
> receive the same error when I exit the component A in the
> RTSystemEditor, it seems that it is not a problem of the component
> deletion within my code.
>
> Any help is appreciated...
>
>
> Many thanks in advance,
> Steffen Wittmeier
>
>
> #0 0x00007ffff2129f3f in omni::releaseObjRef(omniObjRef*) () from
> /usr/lib/libomniORB4.so.1
> #1 0x00007ffff74aa18b in RTC::PortProfile::~PortProfile() () from
> /usr/local/lib/libRTC-1.0.0.so.0
> #2 0x00007ffff750e6e0 in RTC::PortBase::~PortBase() () from
> /usr/local/lib/libRTC-1.0.0.so.0
> #3 0x00007ffff74ef6f6 in RTC::CorbaPort::~CorbaPort() () from
> /usr/local/lib/libRTC-1.0.0.so.0
> #4 0x00007ffff5ec4f1c in ~LogViewer (this=0xbcdfb0, __in_chrg= optimized out>, __vtt_parm=)
> at
> /home/wittmeis/projects/eccerobot/workspaces/workspaceC++/gui@src/src/er/gui/util/log/LogViewer.cpp:111
>
> #5 0x00007ffff5ec9d6f in RTC::Delete
> (rtc=0xbce080) at /usr/local/include/rtm/Factory.h:94
> #6 0x00007ffff747e688 in RTC::FactoryCXX::destroy(RTC::RTObject_impl*)
> () from /usr/local/lib/libRTC-1.0.0.so.0
> #7 0x00007ffff748e027 in
> RTC::Manager::deleteComponent(RTC::RTObject_impl*) () from
> /usr/local/lib/libRTC-1.0.0.so.0
> #8 0x00007ffff748e8a4 in RTC::Manager::cleanupComponents() () from
> /usr/local/lib/libRTC-1.0.0.so.0
> #9 0x00007ffff1a05e77 in coil::Timer::invoke() () from
> /usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
> #10 0x00007ffff1a05ef8 in coil::Timer::svc() () from
> /usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
> #11 0x00007ffff1a0a24a in coil::Task::svc_run(void*) () from
> /usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
> #12 0x00007ffff240ca04 in start_thread (arg=) at
> pthread_create.c:300
> #13 0x00007ffff270180d in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
>
>
>
Hi,
I receive a seg-fault when calling cleanupComponents(). The problem only
occurs in the following setups (see also attached screenshot).
If component A (here LogViewer) is destructed by calling exit() on the
component and cleanupComponents() on the manager (somehow
cleanupComponent(rtc) does not call the destructor?) and this component
A is connected to a port of component B (LogManager) which is turn
connected to a component C (EcceosModel) I receive the seg-fault.
In contrast, if I remove the connection between component B and C and
call exit() on component A, the application exits normally.
I attached a backtrace of the seg-fault. You can see that I am calling
cleanupComponents() that leads to the destructor call of the PortProfile
which causes the error.
Is this some internal error where you could provide a fix for? As I
receive the same error when I exit the component A in the
RTSystemEditor, it seems that it is not a problem of the component
deletion within my code.
Any help is appreciated...
Many thanks in advance,
Steffen Wittmeier
#0 0x00007ffff2129f3f in omni::releaseObjRef(omniObjRef*) () from
/usr/lib/libomniORB4.so.1
#1 0x00007ffff74aa18b in RTC::PortProfile::~PortProfile() () from
/usr/local/lib/libRTC-1.0.0.so.0
#2 0x00007ffff750e6e0 in RTC::PortBase::~PortBase() () from
/usr/local/lib/libRTC-1.0.0.so.0
#3 0x00007ffff74ef6f6 in RTC::CorbaPort::~CorbaPort() () from
/usr/local/lib/libRTC-1.0.0.so.0
#4 0x00007ffff5ec4f1c in ~LogViewer (this=0xbcdfb0, __in_chrg=, __vtt_parm=)
at
/home/wittmeis/projects/eccerobot/workspaces/workspaceC++/gui@src/src/er/gui/util/log/LogViewer.cpp:111
#5 0x00007ffff5ec9d6f in RTC::Delete
(rtc=0xbce080) at /usr/local/include/rtm/Factory.h:94
#6 0x00007ffff747e688 in RTC::FactoryCXX::destroy(RTC::RTObject_impl*)
() from /usr/local/lib/libRTC-1.0.0.so.0
#7 0x00007ffff748e027 in
RTC::Manager::deleteComponent(RTC::RTObject_impl*) () from
/usr/local/lib/libRTC-1.0.0.so.0
#8 0x00007ffff748e8a4 in RTC::Manager::cleanupComponents() () from
/usr/local/lib/libRTC-1.0.0.so.0
#9 0x00007ffff1a05e77 in coil::Timer::invoke() () from
/usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
#10 0x00007ffff1a05ef8 in coil::Timer::svc() () from
/usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
#11 0x00007ffff1a0a24a in coil::Task::svc_run(void*) () from
/usr/local/stow/OpenRTM-aist-1.0.0/lib/libcoil.so.0
#12 0x00007ffff240ca04 in start_thread (arg=) at
pthread_create.c:300
#13 0x00007ffff270180d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112