Hi Dimitri -- No, sorry, it is still segfaulting. Let me know if there's anything else I can try for you.
Also, it segfaults if I set DOT_NUM_THREADS to 2 or 4. If I use 2 threads, then the number of dot graphs it completes fluctuates. Amos. On Jan 24, 2013, at 1:32 PM, Dimitri van Heesch <doxy...@gmail.com> wrote: > 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