[Pkg-libburnia-devel] Bug#718151: [Doxygen-develop] doxygen loops when passing "foo(>0)" to findParameterList

Albert albert.tests at gmail.com
Sun Aug 4 15:40:40 UTC 2013

This looks a bit like *Bug
701295*<https://bugzilla.gnome.org/show_bug.cgi?id=701295>- Doxygen
1.8.4 goes into an endless loop.
Did you try it with the current git version as well?

If the problem is still present please submit a bug in the bug tracer with a
self-contained example (source+config file in a tar or zip) that allows us
to reproduce the problem?


On Sun, Aug 4, 2013 at 2:31 PM, Helmut Grohne <helmut at subdivi.de> wrote:

> Control: clone 718151 -1
> Control: reassign -1 doxygen 1.8.4-1
> Control: severity -1 normal
> Control: retitle -1 doxygen loops when passing "foo(>0)" to
> findParameterList
> On Sat, Aug 03, 2013 at 11:21:11PM +0200, Matthias Klose wrote:
> > fix it in libburn or disable building the docs.  upstream did tell you
> that they
> > didn't want to update that for newer doxygen versions.  There is
> absolutely no
> > reason to reassign this to doxygen.
> While the report was not overly helpful, part of the issue is with
> doxygen. I looked into the issue and pull in
> doxygen-develop at lists.sourceforge.net for further assistance.
> So the issue at hand is that doxygen does not terminate when building
> the documentation for libburn. On interrupting doxygen after leaving it
> running for some time you will see a traceback like this:
> #0  findParameterList (name=...) at util.cpp:1848
> #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
> #2  0x00000000006a608c in handleLinkedWord (parent=0x1c8f4c0,
> children=...) at docparser.cpp:1030
> #3  0x00000000006b832e in DocPara::parse (this=0x1c8f480) at
> docparser.cpp:6311
> #4  0x00000000006b257e in DocSimpleSect::parse (this=0x1c8f410,
> userTitle=false, needsSeparator=false) at docparser.cpp:4570
> #5  0x00000000006b3436 in DocPara::handleSimpleSection (this=0x16594c0,
> t=DocSimpleSect::Since, xmlContext=false) at docparser.cpp:4887
> #6  0x00000000006b59bf in DocPara::handleCommand (this=0x16594c0,
> cmdName=...) at docparser.cpp:5399
> #7  0x00000000006b8a4e in DocPara::parse (this=0x16594c0) at
> docparser.cpp:6478
> #8  0x00000000006b9abb in DocRoot::parse (this=0x1651080) at
> docparser.cpp:6843
> #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
> #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
> #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
> #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
> #13 0x0000000000446904 in FileDef::writeMemberDocumentation
> (this=0x1603fc0, ol=..., lt=MemberListType_docFuncMembers, title=...) at
> filedef.cpp:1742
> #14 0x000000000044263f in FileDef::writeDocumentation (this=0x1603fc0,
> ol=...) at filedef.cpp:685
> #15 0x000000000042364f in generateFileDocs () at doxygen.cpp:7842
> #16 0x0000000000430ab7 in generateOutput () at doxygen.cpp:11231
> #17 0x00000000004032c6 in main (argc=2, argv=0x7fff9a4e9818) at main.cpp:38
> Indeed the issue lies within findParameterList. The name parameter
> passed to resolvRef as a c string is passed to the former function as a
> QString, but its value still represents "burn_abort(>0)". Given this
> value, findParameterList goes into an infinite "do { ... } while (...)"
> loop. The loop iterations alternate between templateDepth=0 and
> templateDepth=1. On the second iteration it will take "then" branch of
> the outer "if" and will set nextOpenPos=-1 and nextClosePos=-1. This
> causes the inner "else" branch to be selected setting pos=-2 and thus
> continuing the loop.
> A possible fix would be to change the loop condition from
> "while(pos != -1)" to "while(pos >= 0)".
> Is this analysis correct?
> As for the libburn maintainers, I suggest to change the comment in the
> header to not include the verbatim string "burn_abort(>0)" in order to
> not confuse doxygen. Yeah, it's a bug in doxygen that it loops, but
> you'll have to work around this one for the time being.
> Helmut
> ------------------------------------------------------------------------------
> Get your SQL database under version control now!
> Version control is standard for application code, but databases havent
> caught up. So what steps can you take to put your SQL databases under
> version control? Why should you start doing it? Read more to find out.
> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
> _______________________________________________
> Doxygen-develop mailing list
> Doxygen-develop at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/doxygen-develop
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-libburnia-devel/attachments/20130804/7b8476e6/attachment-0002.html>

More information about the Pkg-libburnia-devel mailing list