BTW, I am not even sure this would fix the symptoms. I tried a rebuild
of gdcm using DOT_NUM_THREADS = 1 in the doxygen configuration (which
I would hope would be the old behavior).

Not exactly. It still starts one thread for performing the real work.
When I got traces for kfreebsd, it crashes inside thread primitives.
There have been value 8 in field where only 1 or 0 are allowed.
May be some data structures are incorrectly shared between main and
slave threads.

In fact "DOT_NUM_THREADS = 1 in the doxygen configuration"
have same result as "idealThreadCount() returning -1".
Default value for DOT_NUM_THREADS is zero.

The code is src/dot.cpp:

DotManager::DotManager() : m_dotMaps(1007)
{
  m_dotRuns.setAutoDelete(TRUE);
  m_dotMaps.setAutoDelete(TRUE);
  m_queue = new DotRunnerQueue;
  int i;
  int numThreads = QMIN(32,Config_getInt("DOT_NUM_THREADS"));
  if (numThreads==0) numThreads = QMAX(1,QThread::idealThreadCount()+1);
  for (i=0;i<numThreads;i++)
  {
    DotWorkerThread *thread = new DotWorkerThread(i,m_queue);
    thread->start();
    if (thread->isRunning())
    {
      m_workers.append(thread);
    }
    else // no more threads available!
    {
      delete thread;
    }
  }
  ASSERT(m_workers.count()>0);
}




--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to