Dear Colleagues!
Periodically I see in Yate's log following errors:
----------------------------------------------------
20170621143618.000069 <engine:MILD> Creating new message dispatching thread (4 running)
20170621143618.749978 <engine:WARN> Engine is congested: Call endpoint mutex busy
20170621143620.000069 <engine:MILD> Creating new message dispatching thread (5 running)
20170621143622.000079 <engine:MILD> Creating new message dispatching thread (6 running)
Supervisor: child 10193 died on signal 6
Yate (10247) is starting Wed Jun 21 14:36:25 2017
...
Mentioned core dump lines:
----------------------------------------------------
Thread 1 (Thread 0x7f2f47db6700 (LWP 10168)):
#0  0x00007f2f5b56e125 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f2f5b5713a0 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007f2f5c0cb3fb in TelEngine::Debug(int, char const*, ...) () from /usr/lib/libyate.so.5.5.1
#3  0x00007f2f5c0ce148 in TelEngine::MutexPrivate::lock(long) () from /usr/lib/libyate.so.5.5.1
#4  0x00007f2f5aee19a0 in Lock (maxwait=-1, lck=0x7f2f5b11d7a0, this=<synthetic pointer>) at ../yateclass.h:5363
#5  complete (msg=..., this=0x7f2f48104c30, minimal=<optimized out>) at ysipchan.cpp:7376
#6  (anonymous namespace)::YateSIPConnection::complete (this=0x7f2f48104c30, msg=..., minimal=false) at ysipchan.cpp:7371
#7  0x00007f2f5c109ad6 in TelEngine::Channel::message(char const*, bool, bool) () from /usr/lib/libyate.so.5.5.1
#8  0x00007f2f5c109b3d in TelEngine::Channel::connected(char const*) () from /usr/lib/libyate.so.5.5.1
#9  0x00007f2f5c106f24 in TelEngine::CallEndpoint::connect(TelEngine::CallEndpoint*, char const*, bool) () from /usr/lib/libyate.so.5.5.1
#10 0x00007f2f5876cc88 in (anonymous namespace)::ForkModule::msgExecute (msg=..., this=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at callfork.cpp:782
#11 0x00007f2f5876e7c8 in (anonymous namespace)::ForkModule::received (this=0x7f2f589709e0, msg=..., id=256) at callfork.cpp:854
#12 0x00007f2f5c0f50df in TelEngine::MessageDispatcher::dispatch(TelEngine::Message&) () from /usr/lib/libyate.so.5.5.1
#13 0x00007f2f5c107cb6 in TelEngine::Router::route() () from /usr/lib/libyate.so.5.5.1
#14 0x00007f2f5c10b89b in TelEngine::Router::run() () from /usr/lib/libyate.so.5.5.1
#15 0x00007f2f5c0cfc05 in TelEngine::ThreadPrivate::run() () from /usr/lib/libyate.so.5.5.1
#16 0x00007f2f5c0cfc49 in TelEngine::ThreadPrivate::startFunc(void*) () from /usr/lib/libyate.so.5.5.1
#17 0x00007f2f5c3e9b50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#18 0x00007f2f5b619fbd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#19 0x0000000000000000 in ?? ()
And probably here is part of problem code:
------------------------------------------------------
bool ForkModule::msgExecute(Message& msg)
{
    CallEndpoint* ch = YOBJECT(CallEndpoint,msg.userData());
    if (!ch)
   return false;
    String dest(msg.getParam("callto"));
    if (!dest.startSkip(MOD_PREFIX))
   return false;
    ObjList* targets = 0;
    if (dest)
   targets = dest.split(' ',false);
    else {
   for (int n = 1; true; n++) {
       String prefix;
       prefix << "callto." << n;
       NamedString* ns = msg.getParam(prefix);
       if (!ns)
      break;
       if (TelEngine::null(ns))
      continue;
       // Set target parameters from enclosed list
       // Override/add new params from message sub-params
       NamedPointer* np = YOBJECT(NamedPointer,ns);
       NamedList* target = YOBJECT(NamedList,np);
       if (target) {
      np->takeData();
      target->assign(*ns);
       }
       else
      target = new NamedList(*ns);
       target->copySubParams(msg,prefix + ".");
       if (!targets)
      targets = new ObjList;
       targets->append(target);
       // Clear from initial message
       msg.clearParam(prefix,'.');
   }
    }
    if (!(targets && targets->skipNull())) {
   msg.setParam("error","failure");
   TelEngine::destruct(targets);
   return false;
    }
    CallEndpoint::commonMutex().lock();
    ForkMaster* master = new ForkMaster(targets);
    bool ok = master->connect(ch,msg.getValue("reason")) && master->startCalling(msg); // <------------------- line 782
    CallEndpoint::commonMutex().unlock();
    master->deref();
    return ok;
}
Best regards!