[Bug 401] New: ports()->removePort does not remove associated TaskObject from interface.

For more information about this bug, visit
A new bug was added:
Summary: ports()->removePort does not remove associated
TaskObject from interface.
Product: RTT
Version: rtt-trunk
Platform: All
OS/Version: All
Status: NEW
Severity: major
Priority: P2
Component: Real-Time Toolkit (RTT)
AssignedTo: orocos-dev [..] ...
ReportedBy: peter [dot] soetens [..] ...

When removePort() is called and the removed port is freed, the associated
port's TaskObject remains in the TaskContext, pointing to invalid memory,
and causing a crash when used.

The DataFlowInterface implementation did not get in good shape before the 1.0
release. Especially the relation TaskObject(scripting) <-> DataPort(C++) is not
well handled. This can be fixed without modifying the interface.

wmeeusse's picture

[Bug 401] ports()->removePort does not remove associated TaskObj

For more information about this bug, visit
A comment was added:
------- Comment #4 from wim [dot] meeussen [..] ... 2007-05-14 15:19

> You need to re-run cmake in your RTT build directory as a new file was added.
> Newly added files are not automatically detected by cmake if you do not start
> a new build directory.

Okay! For CMake's defense: if you list all the cpp files in your CMakeList, it
will automatically re-configure to include the new file. If you only include
*.cpp it will not...

[Bug 401] ports()->removePort does not remove associated TaskObj

For more information about this bug, visit
A comment was added:
------- Comment #3 from peter [dot] soetens [..] ... 2007-05-14 15:02

(In reply to comment #2)
> Does this problem have anything to do with your commit?
>
> make in ocl:
>
> [100%] Building CXX object tests/CMakeFiles/toolkittest.dir/toolkittest.o
> Linking CXX executable toolkittest
> /install/build-gnulinux/lib/liborocos-rtt.so: undefined reference to
> `RTT::DataFlowInterface::getPorts() const'
>

You need to re-run cmake in your RTT build directory as a new file was added.
Newly added files are not automatically detected by cmake if you do not start a
new build directory.

Peter

wmeeusse's picture

[Bug 401] ports()->removePort does not remove associated TaskObj

For more information about this bug, visit
A comment was added:
------- Comment #2 from wim [dot] meeussen [..] ... 2007-05-14 14:49

Does this problem have anything to do with your commit?

make in ocl:

[100%] Building CXX object tests/CMakeFiles/toolkittest.dir/toolkittest.o
Linking CXX executable toolkittest
/install/build-gnulinux/lib/liborocos-rtt.so: undefined reference to
`RTT::DataFlowInterface::getPorts() const'

[Bug 401] ports()->removePort does not remove associated TaskObj

For more information about this bug, visit

peter [dot] soetens [..] ... changed:

What |Removed |Added
---------------------------------------------------------------------------
Target Milestone|--- |1.2.0
Resolution| |FIXED
Status|NEW |RESOLVED

------- Comment #1 from peter [dot] soetens [..] ... 2007-05-14 14:22

$ svn ci -m"Fix bug #401: ports()->removePort does not remove associated
TaskObject from interface.
> This patch fixes that issue and adds a unit test as well.
> It also deprecates some 'utility' functions for 'exporting' ports, which is now done automatically when the port is added.
> "
Sending rtt/src/BufferPort.hpp
Adding rtt/src/DataFlowInterface.cpp
Sending rtt/src/DataFlowInterface.hpp
Sending rtt/src/DataPort.hpp
Sending rtt/src/TaskContext.cpp
Sending rtt/src/TaskContext.hpp
Sending rtt/tests/generictask_test_3.cpp
Sending rtt/tests/generictask_test_3.hpp
Transmitting file data ........
Committed revision 28119.