[ http://issues.apache.org/jira/browse/TUSCANY-719?page=comments#action_12434304 ] Jean-Sebastien Delfino commented on TUSCANY-719: ------------------------------------------------
Hi Geoff, I tried your patch on Windows / VC++ express 2005 and got the same exception as before: incompatible list iterator > Exception in SDO runtime on Windows using VC++ Express 2005 > ----------------------------------------------------------- > > Key: TUSCANY-719 > URL: http://issues.apache.org/jira/browse/TUSCANY-719 > Project: Tuscany > Issue Type: Bug > Components: C++ SDO > Affects Versions: Cpp-current > Environment: Windows and VC++ Express 2005 > Reporter: Geoff Winn > Priority: Minor > Attachments: TUSCANY-jsd.patch > > > Here's the Exception and call stack I'm getting from sdo_test on > Windows, built with VC++ Express 2005: > msvcp80d.dll!104f9961() > [Frames below may be incorrect and/or missing, no symbols loaded > for msvcp80d.dll] > > > tuscany_sdo.dll!std::list<commonj::sdo::rdo,std::allocator<commonj::sdo::rdo> > >::_Const_iterator<1>::_Compat(const > std::list<commonj::sdo::rdo,std::allocator<commonj::sdo::rdo> > >::_Const_iterator<1> & _Right={first=3452816845 second={...} }) Line > 309 + 0x17 bytes C++ > tuscany_sdo.dll!std::list<commonj::sdo::rdo,std::allocator<commonj::sdo::rdo> > >::_Const_iterator<1>::operator==(const > std::list<commonj::sdo::rdo,std::allocator<commonj::sdo::rdo> > >::_Const_iterator<1> & _Right={first=3452816845 second={...} }) Line > 290 C++ > tuscany_sdo.dll!commonj::sdo::DataObjectImpl::~DataObjectImpl() > Line 4564 + 0x37 bytes C++ > tuscany_sdo.dll!commonj::sdo::DataObjectImpl::`scalar deleting > destructor'() + 0x2b bytes C++ > tuscany_sdo.dll!commonj::sdo::RefCountingObject::releaseRef() Line > 69 + 0x4c bytes C++ > sdo_test.exe!commonj::sdo::RefCountingPointer<commonj::sdo::DataObject>::~RefCountingPointer<commonj::sdo::DataObject>() > Line 133 + 0x15 bytes C++ > sdo_test.exe!sdotest::scopetest() Line 69 + 0x19 bytes C++ > sdo_test.exe!main(int argc=1, char * * argv=0x00386018) Line 48 + > 0x5 bytes C++ > sdo_test.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C > sdo_test.exe!mainCRTStartup() Line 403 C > The exception is raised in list.cpp - line 309: > #if _HAS_ITERATOR_DEBUGGING > void _Compat(const _Myt_iter& _Right) const > { // test for compatible iterator pair > if (this->_Mycont == 0 || this->_Mycont != _Right._Mycont) > { > _DEBUG_ERROR("list iterators incompatible"); <---- There > _SCL_SECURE_TRAITS_INVALID_ARGUMENT; > } > } > This is called from DataObjectImpl::~DataObjectImpl(): > PropertyValueMap::iterator i = PropertyValues.begin(); > while (i != PropertyValues.end()) > { > unset((*i).first); > if (i == PropertyValues.begin()) <-- There > { > // unset has not removed the item from the list - do it > // here instead > PropertyValues.erase(i); > } > i = PropertyValues.begin(); > } > And I am a little puzzled by the code in the above loop... Although I > didn't spend much time trying to grasp the logic here, and I have not > been playing with C++ iterators too much lately, my experience is that > removing entries from a collection that you're iterating on is usually a > sure way to shoot yourself in the foot :) so I may be wrong but I sense > a bug somewhere in this loop... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]