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

For more information about this bug, visit <http://www.fmtc.be/orocos-bugzilla/show_bug.cgi?id=401>
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 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.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

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

For more information about this bug, visit <http://www.fmtc.be/orocos-bugzilla/show_bug.cgi?id=401>

peter soetens [..] changed:

           What    |Removed                     |Added
 ---------------------------------------------------------------------------
   Target Milestone|---                         |1.2.0
         Resolution|                            |FIXED
             Status|NEW                         |RESOLVED
------- Comment #1 from peter 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.

wmeeusse's picture

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

For more information about this bug, visit <http://www.fmtc.be/orocos-bugzilla/show_bug.cgi?id=401>
A comment was added:

------- Comment #2 from wim 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 <http://www.fmtc.be/orocos-bugzilla/show_bug.cgi?id=401>
A comment was added:

------- Comment #3 from peter 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 <http://www.fmtc.be/orocos-bugzilla/show_bug.cgi?id=401>
A comment was added:

------- Comment #4 from wim 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...