Description of problem: doxygen 1.8.4 goes to an inifinity loop inside a koji build when generating documentation. This bug can be reproduced only in a specific case : - The platform must be RHEL6 / SL6 - mock must try to build for a rawhide target - the src code used for the documentation generation must contains a commented loop ( ex : while(ret <0 ) ) This issue is not minor, all koji builds are under EL6 and are used to build fedora rawhide, this issue can hangs any src.rpm koji build with a doxygen generation for rawhide. Version-Release number of selected component (if applicable): doxygen-1.8.4-1 How reproducible: On RHEL6/SL6 : wget http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix-0.2.0-1.el5.centos.src.rpm mock -r fedora-rawhide-x86_64 davix-0.2.0-1.el5.centos.src.rpm On Koji : wget http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix-0.2.0-1.el5.centos.src.rpm koji build --scratch rawhide davix-0.2.0-1.el5.centos.src.rpm Example : http://koji.fedoraproject.org/koji/taskinfo?taskID=5471071 Actual results: -> infinity loop Expected results: -> finished with warnings Additional info: -> occures only on a EL6 mock building for rawhide, not on a f18 mock building for rawhide Stack trace : (gdb) bt #0 0x0000000000760f60 in QString::findRev (this=this@entry=0x7fffffffd410, str=..., index=<optimized out>, index@entry=-2, cs=cs@entry=true) at qstring.cpp:13064 #1 0x0000000000761111 in QString::findRev (this=this@entry=0x7fffffffd410, c=..., index=index@entry=-2, cs=cs@entry=true) at qstring.cpp:13021 #2 0x0000000000605da2 in findRev (cs=true, index=-2, c=40 '(', this=0x7fffffffd410) at ../qtools/qstring.h:736 #3 findParameterList (name=...) at util.cpp:1855 #4 0x0000000000620328 in resolveRef (scName=0x16b4470 "Davix::HttpRequest", name=0x16b9670 "while(ret > 0)", inSeeBlock=<optimized out>, resContext=resContext@entry=0x7fffffffd720, resMember=resMember@entry=0x7fffffffd728, lookForSpecialization=lookForSpecialization@entry=true, currentFile=0x10dbdd0, checkScope=checkScope@entry=true) at util.cpp:4363 #5 0x00000000006c5960 in handleLinkedWord (parent=parent@entry=0x16b9aa0, children=...) at docparser.cpp:1030 #6 0x00000000006d004b in DocPara::parse (this=this@entry=0x16b9a60) at docparser.cpp:6311 #7 0x00000000006d98b1 in DocRoot::parse (this=this@entry=0x16b2360) at docparser.cpp:6843 #8 0x00000000006d9f81 in validatingParseDoc ( fileName=fileName@entry=0x16b64b0 "/builddir/build/BUILD/davix-0.2.0/src/request/httprequest.hpp", startLine=startLine@entry=119, ctx=ctx@entry=0x127a9e0, md=md@entry=0x1124360, input=0x16b7ad0 " the multi-part HTTP Request of davix\n should be used for request with a large answer\n\n\n example :\n DavixError* tmp_err=NULL;\n beginRequest(&tmp_err) //\n do{\n ret= readBlock(buffer, size_read"..., indexWords=indexWords@entry=true, isExample=isExample@entry=false, exampleName=exampleName@entry=0x0, singleLine=false, linkFromIndex=linkFromIndex@entry=false) at docparser.cpp:7085 ---Type <return> to continue, or q <return> to quit--- #9 0x000000000059555a in OutputList::generateDoc (this=this@entry=0x1265cf0, fileName=0x16b64b0 "/builddir/build/BUILD/davix-0.2.0/src/request/httprequest.hpp", startLine=startLine@entry=119, ctx=ctx@entry=0x127a9e0, md=md@entry=0x1124360, docStr=..., indexWords=indexWords@entry=true, isExample=isExample@entry=false, exampleName=exampleName@entry=0x0, singleLine=singleLine@entry=false, linkFromIndex=linkFromIndex@entry=false) at outputlist.cpp:153 #10 0x0000000000581452 in MemberDef::writeDocumentation (this=0x1124360, ml=ml@entry=0x11201b0, ol=..., scName=scName@entry=0x16b0050 "Davix::HttpRequest", container=container@entry=0x127a9e0, inGroup=<optimized out>, showEnumValues=showEnumValues@entry=false, showInline=showInline@entry=false) at memberdef.cpp:2745 #11 0x000000000058a857 in MemberList::writeDocumentation (this=this@entry=0x11201b0, ol=..., scopeName=0x16b0050 "Davix::HttpRequest", container=container@entry=0x127a9e0, title=title@entry=0x16bb000 "Member Function Documentation", showEnumValues=showEnumValues@entry=false, showInline=showInline@entry=false) at memberlist.cpp:655 #12 0x000000000067416e in ClassDef::writeMemberDocumentation ( this=this@entry=0x127a9e0, ol=..., lt=<optimized out>, title=..., showInline=showInline@entry=false) at classdef.cpp:4269 #13 0x0000000000676984 in ClassDef::writeDocumentationContents ( this=this@entry=0x127a9e0, ol=...) at classdef.cpp:1944 #14 0x0000000000676df3 in ClassDef::writeDocumentation (this=0x127a9e0, ol=...) at classdef.cpp:2046 #15 0x0000000000439626 in generateOutput () at doxygen.cpp:8906 #16 0x000000000040afee in main (argc=2, argv=0x7fffffffe6a8) at main.cpp:38 Adev
No news ?
it's fixed in doxygen-1.8.4-2.fc20. You can download the new doxygen package from: http://koji.fedoraproject.org/koji/taskinfo?taskID=5536046 thanks for your report.
Hi Ngo, Thank you very much for your fix, but your koji seems to have failed. Adrien
i already saw the build failure, it's a bug in texlive which has caused this failure. It will take time to fix texlive, so please patient!
Thank you Ngo, I'm not in a hurry and it's clearly not urgent. I reported this just for safety reason, if a mass rebuild occures it can potentially break things: a lot of package use doxygen. Adrien.