< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[reSIProcate] DialogUsageManager.cxx - assert




This section of code (at bottom) in DialogUsageManager is occasionally aborting my application.

I entered the core dump with gdb and got the following:

(gdb) bt
#0  0xb73067a7 in raise () from /lib/tls/libc.so.6
#1  0xb73081a9 in abort () from /lib/tls/libc.so.6
#2  0xb72ff755 in __assert_fail () from /lib/tls/libc.so.6
#3 0xb7e774ad in resip::DialogUsageManager::incomingProcess (this=0x807f050,
   msg={_M_ptr = 0x80891d0}) at DialogUsageManager.cxx:1104
#4 0xb7e771e3 in resip::DialogUsageManager::internalProcess (this=0x807f050,
   msg={_M_ptr = 0x0}) at DialogUsageManager.cxx:1071

(gdb) print msg
$1 = {_M_ptr = 0x80891d0}
(gdb) print msg._M_ptr
$2 = (resip::Message *) 0x80891d0

Does anyone have any ideas? Should this be handled more gracefully than calling assert?


  if (tid != Data::Empty && !mIncomingFeatureList.empty())
  {
     FeatureChainMap::iterator it;
//efficiently find or create FeatureChain, should prob. be a utility template
     {
FeatureChainMap::iterator lb = mIncomingFeatureChainMap.lower_bound(tid); if (lb != mIncomingFeatureChainMap.end() && !(mIncomingFeatureChainMap.key_comp()(tid, lb->first)))
        {
           it = lb;
        }
        else
        {
           assert(dynamic_cast<SipMessage*>(msg.get()));
it = mIncomingFeatureChainMap.insert(lb, FeatureChainMap::value_type(tid, new DumFeatureChain(*this, mIncomingFeatureList, *mIncomingTarget)));
        }
     }