Bug 974069 - doxygen-1.8.4 hangs in a infinity loop in some case
doxygen-1.8.4 hangs in a infinity loop in some case
Product: Fedora
Classification: Fedora
Component: doxygen (Show other bugs)
All Linux
unspecified Severity high
: ---
: ---
Assigned To: Ngo Than
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2013-06-13 07:40 EDT by Adrien Devresse
Modified: 2013-08-10 16:21 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2013-06-24 11:34:23 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Adrien Devresse 2013-06-13 07:40:11 EDT
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):

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 :

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>, 
    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, 
    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", 
    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

Comment 1 Adrien Devresse 2013-06-24 07:31:34 EDT
No news ?
Comment 2 Ngo Than 2013-06-24 11:34:23 EDT
it's fixed in doxygen-1.8.4-2.fc20. You can download the new doxygen package from:

thanks for your report.
Comment 3 Adrien Devresse 2013-06-24 11:46:54 EDT
Hi Ngo, 

Thank you very much for your fix, but your koji seems to have failed.

Comment 4 Ngo Than 2013-06-27 08:55:38 EDT
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!
Comment 5 Adrien Devresse 2013-06-27 09:00:58 EDT
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.


Note You need to log in before you can comment on or make changes to this bug.