Hi Amos, Interesting trace. Can you check if the following patch fixes this race condition for you?
----------------------------------------------------------------------------- --- dot.cpp.org 2013-01-20 13:54:23.000000000 +0100 +++ dot.cpp 2013-01-24 22:28:37.000000000 +0100 @@ -1142,7 +1142,7 @@ { QMutexLocker locker(&m_mutex); m_queue.enqueue(runner); - m_bufferNotEmpty.wakeAll(); + m_bufferNotEmpty.wakeOne(); } DotRunner *DotRunnerQueue::dequeue() ----------------------------------------------------------------------------- Regards, Dimitri On Jan 24, 2013, at 22:02 , Amos Anderson <amos.ander...@protabit.com> wrote: > Hello -- > > Doxygen 1.8.3.1 is segfaulting on me. The exact same version works on my > other Linux machine and on OSX, and previous versions of doxygen work on this > particular machine too. > > The segfault goes away if I make this config file change: > > > -DOT_NUM_THREADS = 0 > +DOT_NUM_THREADS = 1 > > > > The output immediately preceding the segfault: > Generating annotated compound index... > Generating alphabetical compound index... > Generating hierarchical class index... > Generating graphical class hierarchy... > Generating member index... > Generating file index... > Generating file member index... > Generating example index... > finalizing index lists... > Generating dot graphs using 9 parallel threads... > > > The version of dot I'm using: > >> dot -v > dot - graphviz version 2.30.0 (20130124.0007) > > > > The gdb output: > > [yoda]/home/amosa/src/doxygen-1.8.3.1> gdb --pid=29784 > GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-37.el5) > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "x86_64-redhat-linux-gnu". > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Attaching to process 29784 > Reading symbols from /home/amosa/bin/doxygen...done. > Reading symbols from /opt/mpi/openmpi/1.5.4/gcc/lib64/libmpi.so...done. > Loaded symbols for /opt/mpi/openmpi/1.5.4/gcc/lib64/libmpi.so > Reading symbols from /lib64/libpthread.so.0...(no debugging symbols > found)...done. > [Thread debugging using libthread_db enabled] > Loaded symbols for /lib64/libpthread.so.0 > Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols > found)...done. > Loaded symbols for /usr/lib64/libstdc++.so.6 > Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done. > Loaded symbols for /lib64/libm.so.6 > Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols > found)...done. > Loaded symbols for /lib64/libgcc_s.so.1 > Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. > Loaded symbols for /lib64/libc.so.6 > Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done. > Loaded symbols for /lib64/libdl.so.2 > Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib64/libnsl.so.1 > Reading symbols from /lib64/libutil.so.1...(no debugging symbols > found)...done. > Loaded symbols for /lib64/libutil.so.1 > Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols > found)...done. > Loaded symbols for /lib64/ld-linux-x86-64.so.2 > > warning: no loadable sections found in added symbol-file system-supplied DSO > at 0x7fff97b89000 > opal_memory_ptmalloc2_int_malloc (av=0x2b1fc09393c0, bytes=24) at > malloc.c:3938 > 3938 malloc.c: No such file or directory. > in malloc.c > (gdb) where > #0 opal_memory_ptmalloc2_int_malloc (av=0x2b1fc09393c0, bytes=24) at > malloc.c:3938 > #1 0x00002b1fc06be967 in opal_memory_ptmalloc2_malloc (bytes=24) at > malloc.c:3432 > #2 0x000000359f4bd1dd in operator new(unsigned long) () from > /usr/lib64/libstdc++.so.6 > #3 0x00000000007120a2 in QGList::append (this=0x1c7815c0, d=0x7fff97b4e1c0) > at qglist.cpp:366 > #4 0x000000000071233b in QGListIterator::QGListIterator > (this=0x7fff97b4e1c0, l=...) at qglist.cpp:1063 > #5 0x000000000048d059 in QListIterator<BaseClassDef>::QListIterator > (this=0x7fff97b4e1c0, l=...) > at ../qtools/qlist.h:111 > #6 0x000000000048d079 in BaseClassListIterator::BaseClassListIterator > (this=0x7fff97b4e1c0, bcl=...) at classdef.h:519 > #7 0x000000000062938a in ClassDef::isBaseClass (this=0x1c82fa10, > bcd=0x1c841940, followInstances=true, level=0) > at classdef.cpp:2584 > #8 0x0000000000629493 in ClassDef::isAccessibleMember (this=0x1c82fa10, > md=0x1c969670) at classdef.cpp:3787 > #9 0x00000000005e93dd in isAccessibleFrom (scope=0x1c82fa10, > fileScope=0x1c6a8a30, item=0x1c969670) at util.cpp:966 > #10 0x00000000005e9721 in isAccessibleFromWithExpScope (scope=0x1c82fa10, > fileScope=0x1c6a8a30, item=0x1c969670, > explicitScopePart=...) at util.cpp:1054 > #11 0x00000000005eb3e3 in substTypedef (scope=0x1c82fa10, > fileScope=0x1c6a8a30, name=..., pTypeDef=0x7fff97b4e4d0) > at util.cpp:690 > #12 0x00000000005e8dfd in followPath (start=0x1c60c3f0, fileScope=0x1c6a8a30, > path=...) at util.cpp:761 > #13 0x00000000005e97f9 in isAccessibleFromWithExpScope (scope=0x1c60c3f0, > fileScope=0x1c6a8a30, item=0x1d0db1e0, > explicitScopePart=...) at util.cpp:1069 > #14 0x00000000005e9be5 in isAccessibleFromWithExpScope (scope=0x1c892100, > fileScope=0x1c6a8a30, item=0x1d0db1e0, > explicitScopePart=...) at util.cpp:1187 > #15 0x00000000005e9be5 in isAccessibleFromWithExpScope (scope=0x1c82fa10, > fileScope=0x1c6a8a30, item=0x1d0db1e0, > explicitScopePart=...) at util.cpp:1187 > #16 0x00000000005ea076 in getResolvedSymbol (scope=0x1c82fa10, > fileScope=0x1c6a8a30, d=0x1d0db1e0, > explicitScopePart=..., actTemplParams=0x7fff97b4e930, > minDistance=@0x7fff97b4e99c, bestMatch=@0x7fff97b4e9c8, > bestTypedef=@0x7fff97b4e9c0, bestTemplSpec=..., bestResolvedType=...) at > util.cpp:1230 > #17 0x00000000005eab76 in getResolvedClassRec (scope=0x1c82fa10, > fileScope=0x1c6a8a30, > n=0x1d6bd9f0 "ads::NotEqualToByHandle::Base::result_type", pTypeDef=0x0, > pTemplSpec=0x0, pResolvedType=0x0) > at util.cpp:1509 > #18 0x00000000005eaf07 in getResolvedClass (scope=0x1c82fa10, > fileScope=0x1c6a8a30, > n=0x1d6bd9f0 "ads::NotEqualToByHandle::Base::result_type", pTypeDef=0x0, > pTemplSpec=0x0, mayBeUnlinkable=false, > mayBeHidden=false, pResolvedType=0x0) at util.cpp:1586 > #19 0x0000000000638e83 in stripClassName (s=0x1d8beee0 "Base::result_type", > d=0x1c82fa10) at code.l:686 > #20 0x0000000000639f7d in generateClassMemberLink (ol=..., xmd=0x1c941ca0, > memName=0x2b1fc47a366d "result_type") > at code.l:1145 > #21 0x000000000063d0fb in generateFunctionLink (ol=..., > funcName=0x2b1fc47a366d "result_type") at code.l:1321 > #22 0x000000000064218c in codeYYlex () at code.l:2533 > #23 0x0000000000647d32 in parseCCode (od=..., className=0x0, s=..., > exBlock=false, exName=0x0, fd=0x1c6a8a30, > startLine=-1, endLine=-1, inlineFragment=false, memberDef=0x0, > showLineNumbers=true, searchCtx=0x0) at code.l:3631 > #24 0x00000000005956dd in CLanguageScanner::parseCode (this=0x1c5d8590, > codeOutIntf=..., scopeName=0x0, input=..., > isExampleBlock=false, exampleName=0x0, fileDef=0x1c6a8a30, startLine=-1, > endLine=-1, inlineFragment=false, > memberDef=0x0, showLineNumbers=true, searchCtx=0x0) at scanner.l:6471 > #25 0x000000000043e7f3 in FileDef::writeSource (this=0x1c6a8a30, ol=...) at > filedef.cpp:852 > #26 0x000000000040429d in generateFileSources () at doxygen.cpp:7460 > #27 0x000000000042662c in generateOutput () at doxygen.cpp:10690 > #28 0x00000000004030bc in main (argc=2, argv=0x7fff97b4fab8) at main.cpp:38 > (gdb) continue > Continuing. > [New Thread 0x41ec8940 (LWP 29806)] > [New Thread 0x428c9940 (LWP 29807)] > [New Thread 0x432ca940 (LWP 29808)] > [New Thread 0x43ccb940 (LWP 29809)] > [New Thread 0x446cc940 (LWP 29810)] > [New Thread 0x450cd940 (LWP 29811)] > [New Thread 0x45ace940 (LWP 29812)] > [New Thread 0x464cf940 (LWP 29813)] > [New Thread 0x46ed0940 (LWP 29814)] > Detaching after fork from child process 29858. > Detaching after fork from child process 29859. > Detaching after fork from child process 29860. > Detaching after fork from child process 29861. > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0x432ca940 (LWP 29808)] > 0x000000358c671e0a in _int_free () from /lib64/libc.so.6 > (gdb) backtrace > #0 0x000000358c671e0a in _int_free () from /lib64/libc.so.6 > #1 0x000000358c676192 in free_atfork () from /lib64/libc.so.6 > #2 0x000000358c672941 in free () from /lib64/libc.so.6 > #3 0x0000000000712ccf in QGList::takeFirst (this=0x1e5d95f8) at > qglist.cpp:628 > #4 0x00000000006c84bd in QQueue<DotRunner>::dequeue (this=0x1e5d95f8) at > ../qtools/qqueue.h:59 > #5 0x00000000006c368b in DotRunnerQueue::dequeue (this=0x1e5d95f0) at > dot.cpp:1156 > #6 0x00000000006c5ebc in DotWorkerThread::run (this=0x1e5d7700) at > dot.cpp:1177 > #7 0x00000000007420ec in QThreadPrivate::start (arg=0x1e5d7700) at > qthread_unix.cpp:87 > #8 0x000000358d20673d in start_thread () from /lib64/libpthread.so.0 > #9 0x000000358c6d44bd in clone () from /lib64/libc.so.6 > (gdb) info frame > Stack level 0, frame at 0x432c9f70: > rip = 0x358c671e0a in _int_free; saved rip 0x358c676192 > called by frame at 0x432c9fb0 > Arglist at 0x432c9ed8, args: > Locals at 0x432c9ed8, Previous frame's sp is 0x432c9f70 > Saved registers: > rbx at 0x432c9f38, rbp at 0x432c9f40, r12 at 0x432c9f48, r13 at 0x432c9f50, > r14 at 0x432c9f58, r15 at 0x432c9f60, > rip at 0x432c9f68 > (gdb) up > #1 0x000000358c676192 in free_atfork () from /lib64/libc.so.6 > (gdb) up > #2 0x000000358c672941 in free () from /lib64/libc.so.6 > (gdb) up > #3 0x0000000000712ccf in QGList::takeFirst (this=0x1e5d95f8) at > qglist.cpp:628 > 628 delete n; > (gdb) info frame > Stack level 3, frame at 0x432ca020: > rip = 0x712ccf in QGList::takeFirst (qglist.cpp:628); saved rip 0x6c84bd > called by frame at 0x432ca040, caller of frame at 0x432c9ff0 > source language c++. > Arglist at 0x432ca010, args: this=0x1e5d95f8 > Locals at 0x432ca010, Previous frame's sp is 0x432ca020 > Saved registers: > rbp at 0x432ca010, rip at 0x432ca018 > (gdb) info locals > n = 0x1e8e9c10 > d = 0x1e5e13f0 > (gdb) > > > > > ------------------------------------------------------------------------------ > Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, > MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current > with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft > MVPs and experts. ON SALE this month only -- learn more at: > http://p.sf.net/sfu/learnnow-d2d > _______________________________________________ > Doxygen-users mailing list > Doxygen-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/doxygen-users ------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnnow-d2d _______________________________________________ Doxygen-users mailing list Doxygen-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/doxygen-users