<div dir="ltr"><div><div><div>This looks a bit like <a href="https://bugzilla.gnome.org/show_bug.cgi?id=701295"><b>Bug 701295</b></a> -<span id="summary_alias_container"> 
      <span id="short_desc_nonedit_display">Doxygen 1.8.4 goes into an endless loop.<br></span></span></div><span id="summary_alias_container"><span id="short_desc_nonedit_display">Did you try it with the current git version as well?<br>
<br></span></span></div><span id="summary_alias_container"><span id="short_desc_nonedit_display">If the problem is still present please submit a bug in the bug tracer with </span></span>a self-contained
example (source+config file in a tar or zip) that allows us to reproduce the
problem?<br><br></div>Albert<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Aug 4, 2013 at 2:31 PM, Helmut Grohne <span dir="ltr"><<a href="mailto:helmut@subdivi.de" target="_blank">helmut@subdivi.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Control: clone 718151 -1<br>
Control: reassign -1 doxygen 1.8.4-1<br>
Control: severity -1 normal<br>
Control: retitle -1 doxygen loops when passing "foo(>0)" to findParameterList<br>
<br>
On Sat, Aug 03, 2013 at 11:21:11PM +0200, Matthias Klose wrote:<br>
> fix it in libburn or disable building the docs.  upstream did tell you that they<br>
> didn't want to update that for newer doxygen versions.  There is absolutely no<br>
> reason to reassign this to doxygen.<br>
<br>
While the report was not overly helpful, part of the issue is with<br>
doxygen. I looked into the issue and pull in<br>
<a href="mailto:doxygen-develop@lists.sourceforge.net">doxygen-develop@lists.sourceforge.net</a> for further assistance.<br>
<br>
So the issue at hand is that doxygen does not terminate when building<br>
the documentation for libburn. On interrupting doxygen after leaving it<br>
running for some time you will see a traceback like this:<br>
<br>
#0  findParameterList (name=...) at util.cpp:1848<br>
#1  0x00000000005f894f in resolveRef (scName=0x0, name=0x1657d30 "burn_abort(>0)", inSeeBlock=false, resContext=0x7fff9a4e8c40, resMember=0x7fff9a4e8c48, lookForSpecialization=true, currentFile=0x1603fc0, checkScope=true) at util.cpp:4363<br>

#2  0x00000000006a608c in handleLinkedWord (parent=0x1c8f4c0, children=...) at docparser.cpp:1030<br>
#3  0x00000000006b832e in DocPara::parse (this=0x1c8f480) at docparser.cpp:6311<br>
#4  0x00000000006b257e in DocSimpleSect::parse (this=0x1c8f410, userTitle=false, needsSeparator=false) at docparser.cpp:4570<br>
#5  0x00000000006b3436 in DocPara::handleSimpleSection (this=0x16594c0, t=DocSimpleSect::Since, xmlContext=false) at docparser.cpp:4887<br>
#6  0x00000000006b59bf in DocPara::handleCommand (this=0x16594c0, cmdName=...) at docparser.cpp:5399<br>
#7  0x00000000006b8a4e in DocPara::parse (this=0x16594c0) at docparser.cpp:6478<br>
#8  0x00000000006b9abb in DocRoot::parse (this=0x1651080) at docparser.cpp:6843<br>
#9  0x00000000006ba35b in validatingParseDoc (fileName=0x164f620 ".../libburn/libburn.h", startLine=3608, ctx=0x156b7e0, md=0x183a3a0, input=0x1653f80 " Either by setting an own handler or\nby activating the built-in signal handler.\n\nA function parameter handle of NULL activates the built-in abort handler. \nDepending on mode it may cancel all drive op"..., indexWords=true, isExample=false, exampleName=0x0, singleLine=false, linkFromIndex=false) at docparser.cpp:7085<br>

#10 0x0000000000574224 in OutputList::generateDoc (this=0x18790e0, fileName=0x164f620 ".../libburn/libburn.h", startLine=3608, ctx=0x156b7e0, md=0x183a3a0, docStr=..., indexWords=true, isExample=false, exampleName=0x0, singleLine=false, linkFromIndex=false) at outputlist.cpp:153<br>

#11 0x000000000055e4a0 in MemberDef::writeDocumentation (this=0x183a3a0, ml=0x17405b0, ol=..., scName=0x1641150 "libburn.h", container=0x1603fc0, inGroup=false, showEnumValues=false, showInline=false) at memberdef.cpp:2745<br>

#12 0x000000000056aff5 in MemberList::writeDocumentation (this=0x17405b0, ol=..., scopeName=0x1641150 "libburn.h", container=0x1603fc0, title=0x163d660 "Function Documentation", showEnumValues=false, showInline=false) at memberlist.cpp:655<br>

#13 0x0000000000446904 in FileDef::writeMemberDocumentation (this=0x1603fc0, ol=..., lt=MemberListType_docFuncMembers, title=...) at filedef.cpp:1742<br>
#14 0x000000000044263f in FileDef::writeDocumentation (this=0x1603fc0, ol=...) at filedef.cpp:685<br>
#15 0x000000000042364f in generateFileDocs () at doxygen.cpp:7842<br>
#16 0x0000000000430ab7 in generateOutput () at doxygen.cpp:11231<br>
#17 0x00000000004032c6 in main (argc=2, argv=0x7fff9a4e9818) at main.cpp:38<br>
<br>
Indeed the issue lies within findParameterList. The name parameter<br>
passed to resolvRef as a c string is passed to the former function as a<br>
QString, but its value still represents "burn_abort(>0)". Given this<br>
value, findParameterList goes into an infinite "do { ... } while (...)"<br>
loop. The loop iterations alternate between templateDepth=0 and<br>
templateDepth=1. On the second iteration it will take "then" branch of<br>
the outer "if" and will set nextOpenPos=-1 and nextClosePos=-1. This<br>
causes the inner "else" branch to be selected setting pos=-2 and thus<br>
continuing the loop.<br>
<br>
A possible fix would be to change the loop condition from<br>
"while(pos != -1)" to "while(pos >= 0)".<br>
<br>
Is this analysis correct?<br>
<br>
As for the libburn maintainers, I suggest to change the comment in the<br>
header to not include the verbatim string "burn_abort(>0)" in order to<br>
not confuse doxygen. Yeah, it's a bug in doxygen that it loops, but<br>
you'll have to work around this one for the time being.<br>
<br>
Helmut<br>
<br>
------------------------------------------------------------------------------<br>
Get your SQL database under version control now!<br>
Version control is standard for application code, but databases havent<br>
caught up. So what steps can you take to put your SQL databases under<br>
version control? Why should you start doing it? Read more to find out.<br>
<a href="http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk</a><br>
_______________________________________________<br>
Doxygen-develop mailing list<br>
<a href="mailto:Doxygen-develop@lists.sourceforge.net">Doxygen-develop@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/doxygen-develop" target="_blank">https://lists.sourceforge.net/lists/listinfo/doxygen-develop</a><br>
</blockquote></div><br></div>