From b27a45845d224c2c005c02bcccb780df2cb7ea0f Mon Sep 17 00:00:00 2001 From: rahuel Date: Tue, 6 Sep 2005 08:46:57 +0000 Subject: [PATCH] Crash in the destructor with omniORB4 --- src/Supervision/CNode_Impl.cxx | 4 ++-- src/Supervision/ELNode_Impl.cxx | 4 ++-- src/Supervision/ESNode_Impl.cxx | 4 ++-- src/Supervision/FNode_Impl.cxx | 4 ++-- src/Supervision/GNode_Impl.cxx | 4 ++-- src/Supervision/Graph_Impl.cxx | 4 ++-- src/Supervision/LNode_Impl.cxx | 4 ++-- src/Supervision/Link_Impl.cxx | 4 ++-- src/Supervision/Port_Impl.cxx | 22 ++++++++++++++++------ src/Supervision/SNode_Impl.cxx | 4 ++-- src/Supervision/StreamGraph_Impl.cxx | 4 ++-- src/Supervision/StreamLink_Impl.cxx | 4 ++-- src/Supervision/StreamPort_Impl.cxx | 4 ++-- src/Supervision/SuperV_Impl.cxx | 4 ++-- src/Supervision/Value_Impl.cxx | 4 ++-- 15 files changed, 44 insertions(+), 34 deletions(-) diff --git a/src/Supervision/CNode_Impl.cxx b/src/Supervision/CNode_Impl.cxx index f41cccf..b75fb59 100644 --- a/src/Supervision/CNode_Impl.cxx +++ b/src/Supervision/CNode_Impl.cxx @@ -179,9 +179,9 @@ void CNode_Impl::destroy() { if ( Delete() ) { _DataFlowNode = NULL ; _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("CNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/ELNode_Impl.cxx b/src/Supervision/ELNode_Impl.cxx index bdb787b..f481b26 100644 --- a/src/Supervision/ELNode_Impl.cxx +++ b/src/Supervision/ELNode_Impl.cxx @@ -77,9 +77,9 @@ void ELNode_Impl::destroy() { // SUPERV::GNode_ptr aCoupled = SUPERV::GNode::_narrow( Coupled() ) ; if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("ELNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/ESNode_Impl.cxx b/src/Supervision/ESNode_Impl.cxx index 1cb438e..9c16925 100644 --- a/src/Supervision/ESNode_Impl.cxx +++ b/src/Supervision/ESNode_Impl.cxx @@ -82,9 +82,9 @@ void ESNode_Impl::destroy() { // SUPERV::GNode_ptr aCoupled = SUPERV::GNode::_narrow( Coupled() ) ; if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("ESNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/FNode_Impl.cxx b/src/Supervision/FNode_Impl.cxx index 88bdca8..99a4311 100644 --- a/src/Supervision/FNode_Impl.cxx +++ b/src/Supervision/FNode_Impl.cxx @@ -81,9 +81,9 @@ void FNode_Impl::destroy() { if ( DataFlowEditor()->IsEditing() ) { if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("FNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/GNode_Impl.cxx b/src/Supervision/GNode_Impl.cxx index 303cf3d..0f213e5 100644 --- a/src/Supervision/GNode_Impl.cxx +++ b/src/Supervision/GNode_Impl.cxx @@ -140,9 +140,9 @@ void GNode_Impl::destroy() { if ( DataFlowEditor()->IsEditing() ) { if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("GNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/Graph_Impl.cxx b/src/Supervision/Graph_Impl.cxx index edd9dc7..b6aee77 100644 --- a/src/Supervision/Graph_Impl.cxx +++ b/src/Supervision/Graph_Impl.cxx @@ -254,9 +254,9 @@ void Graph_Impl::destroy() { } } _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); endService( "Graph_Impl::destroy" ); } diff --git a/src/Supervision/LNode_Impl.cxx b/src/Supervision/LNode_Impl.cxx index 00d1823..45a7336 100644 --- a/src/Supervision/LNode_Impl.cxx +++ b/src/Supervision/LNode_Impl.cxx @@ -82,9 +82,9 @@ void LNode_Impl::destroy() { SUPERV::GNode_ptr aCoupled = SUPERV::GNode::_narrow( Coupled() ) ; if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("LNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/Link_Impl.cxx b/src/Supervision/Link_Impl.cxx index 1331b30..cf36025 100644 --- a/src/Supervision/Link_Impl.cxx +++ b/src/Supervision/Link_Impl.cxx @@ -102,9 +102,9 @@ void Link_Impl::destroy() { beginService( "Link_Impl::destroy" ); Delete() ; _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); endService( "Link_Impl::destroy" ); } diff --git a/src/Supervision/Port_Impl.cxx b/src/Supervision/Port_Impl.cxx index 2e0c7e5..60d11ac 100644 --- a/src/Supervision/Port_Impl.cxx +++ b/src/Supervision/Port_Impl.cxx @@ -140,19 +140,29 @@ void Port_Impl::destroy() { } if ( destroyed ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } endService( "Port_Impl::destroy" ); } +// Only during delete of an InLineNode (because of Loop/EndLoop and Switch/EndSwitch +// CoupledNodes) ; look at destroy above ... void Port_Impl::Remove() { beginService( "Port_Impl::Remove" ); - _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; - delete(_id) ; - _thisObj->_remove_ref(); + if ( _DataFlowNode->IsOneOfInLineNodes() ) { + if ( _InputPort ) { + _DataFlowNode->DelInPort( _DataFlowPort->PortName() ) ; + } + else { + _DataFlowNode->DelOutPort( _DataFlowPort->PortName() ) ; + } + _poa->deactivate_object(*_id) ; +// CORBA::release(_poa) ; + delete(_id) ; +// _thisObj->_remove_ref(); + } endService( "Port_Impl::Remove" ); } diff --git a/src/Supervision/SNode_Impl.cxx b/src/Supervision/SNode_Impl.cxx index 3ea6e50..552ecb1 100644 --- a/src/Supervision/SNode_Impl.cxx +++ b/src/Supervision/SNode_Impl.cxx @@ -79,9 +79,9 @@ void SNode_Impl::destroy() { SUPERV::GNode_ptr aCoupled = SUPERV::GNode::_narrow( Coupled() ) ; if ( Delete() ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } else { MESSAGE("SNode_Impl::destroy ERROR ") ; diff --git a/src/Supervision/StreamGraph_Impl.cxx b/src/Supervision/StreamGraph_Impl.cxx index 76b19d4..d123cf0 100644 --- a/src/Supervision/StreamGraph_Impl.cxx +++ b/src/Supervision/StreamGraph_Impl.cxx @@ -87,9 +87,9 @@ StreamGraph_Impl::~StreamGraph_Impl() { void StreamGraph_Impl::destroy() { beginService( "StreamGraph_Impl::destroy" ); _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); endService( "StreamGraph_Impl::destroy" ); } diff --git a/src/Supervision/StreamLink_Impl.cxx b/src/Supervision/StreamLink_Impl.cxx index b68f0e8..5adde3d 100644 --- a/src/Supervision/StreamLink_Impl.cxx +++ b/src/Supervision/StreamLink_Impl.cxx @@ -84,9 +84,9 @@ void StreamLink_Impl::destroy() { beginService( "StreamLink_Impl::destroy" ); Delete() ; _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); endService( "StreamLink_Impl::destroy" ); } diff --git a/src/Supervision/StreamPort_Impl.cxx b/src/Supervision/StreamPort_Impl.cxx index 759a0cd..9ca3891 100644 --- a/src/Supervision/StreamPort_Impl.cxx +++ b/src/Supervision/StreamPort_Impl.cxx @@ -103,9 +103,9 @@ void StreamPort_Impl::destroy() { } if ( destroyed ) { _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); } endService( "StreamPort_Impl::destroy" ); } diff --git a/src/Supervision/SuperV_Impl.cxx b/src/Supervision/SuperV_Impl.cxx index a6bfe88..6806ada 100644 --- a/src/Supervision/SuperV_Impl.cxx +++ b/src/Supervision/SuperV_Impl.cxx @@ -82,9 +82,9 @@ SuperV_Impl::~SuperV_Impl() { void SuperV_Impl::Destroy() { beginService( "SuperV_Impl::Destroy" ); _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); Py_Finalize(); endService( "SuperV_Impl::Destroy" ); } diff --git a/src/Supervision/Value_Impl.cxx b/src/Supervision/Value_Impl.cxx index 96e7d75..aa2e249 100644 --- a/src/Supervision/Value_Impl.cxx +++ b/src/Supervision/Value_Impl.cxx @@ -133,9 +133,9 @@ Value_Impl::~Value_Impl() { void Value_Impl::destroy() { beginService( "Value_Impl::destroy" ); _poa->deactivate_object(*_id) ; - CORBA::release(_poa) ; +// CORBA::release(_poa) ; delete(_id) ; - _thisObj->_remove_ref(); +// _thisObj->_remove_ref(); endService( "Value_Impl::destroy" ); } -- 2.39.2