After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 696925 - Doxygen gets confused and repeats things thousands of times
Doxygen gets confused and repeats things thousands of times
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: general
1.8.3.1
Other Linux
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2013-03-30 21:15 UTC by Stéphane Charette
Modified: 2013-05-19 12:36 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Doxyfile setup for JUCE (78.75 KB, application/octet-stream)
2013-03-30 21:17 UTC, Stéphane Charette
Details
truncated version of JUCE with a Doxyfile to reproduce the problem in doxygen 1.8.3.1-1 (80.00 KB, application/x-gzip)
2013-03-31 01:15 UTC, Stéphane Charette
Details
screenshot of problem in juce::TopLevelWindow using source files from comment #4 (311.59 KB, image/png)
2013-03-31 01:19 UTC, Stéphane Charette
Details
Doxywizard Log File (134.48 KB, text/plain)
2013-03-31 02:03 UTC, Kevin McBride
Details

Description Stéphane Charette 2013-03-30 21:15:26 UTC
I'm trying to run Doxygen against the open-source library JUCE.  But doxygen runs for days, and produces files that are several GB in size.  It seems it gets stuck in loops.

I tried to reduce the header files I include to track the cause, and commenting out some #include files reduces the time doxygen runs from days to less than 1 minute!  But I still cannot figure out what is causing this problem.

Here is an example of a problematic file generated by Doxygen:

http://jucebrary.sourceforge.net/docs/doxygen/test/classjuce_1_1AlertWindow.html

Scroll down on that page and it should be immediately obvious there is a problem.  Unfortunately, I've spent days on this and still cannot figure out the root cause.

The JUCE source files are here:  https://sourceforge.net/projects/juce/
Comment 1 Stéphane Charette 2013-03-30 21:17:45 UTC
Created attachment 240177 [details]
Doxyfile setup for JUCE

This is the Doxyfile I'm using.  Note I've renamed EXCLUDE= to EEXCLUDE= for the purpose of running tests.

To prevent the looping, rename it back to EXCLUDE=.

To see doxygen get stuck in the nearly-infinite loop, get rid of EXCLUDE=...
Comment 2 Kevin McBride 2013-03-30 23:08:42 UTC
Thank you for taking your time to report this bug.  Does doxygen 1.8.3.1 produce the same problem?  If so, is there any smaller example you can provide in a tar or zip?
Comment 3 Stéphane Charette 2013-03-31 00:14:43 UTC
I just installed version 1.8.3.1-1 (the newest .deb packages I could find for Ubuntu) but the problem still exists.  As I type this, doxygen has been running for just over 6 minutes instead of the 20-30 seconds it takes when I exclude those few problematic .h files.

I'll strip away the JUCE directories and create a small stand-alone example which I'll attach to this bug ticket.
Comment 4 Stéphane Charette 2013-03-31 01:15:29 UTC
Created attachment 240186 [details]
truncated version of JUCE with a Doxyfile to reproduce the problem in doxygen 1.8.3.1-1

I removed all modules from JUCE except for 1 of the core ones in a single directory.  The problem reproduces, though less severe.  Instead of hundreds or thousands of duplicates, there are between 2 and 8 depending on which class I look at.  Doxyfile and single JUCE module attached as a .tar.gz archive.
Comment 5 Stéphane Charette 2013-03-31 01:19:48 UTC
Created attachment 240187 [details]
screenshot of problem in juce::TopLevelWindow using source files from comment #4
Comment 6 Kevin McBride 2013-03-31 02:01:21 UTC
I have been able to reproduce the problem using the tar.gz attachment on at least "juce::TopLevelWindow".  I am also attaching a doxygen log file to help the doxygen developers see what happened when this bug was triaged on my Windows 8 computer.
Comment 7 Kevin McBride 2013-03-31 02:03:42 UTC
Created attachment 240188 [details]
Doxywizard Log File
Comment 8 Dimitri van Heesch 2013-04-20 14:52:51 UTC
The problem is with include guard detection in combination with the following construct:

//- n.h ---------

namespace N
{

#ifndef A_H
#include "a.h"
#endif

#ifndef B_H
#include "b.h"
#endif

}

//- a.h ---------

#ifndef A_H
#define A_H

class A{};

#endif

//- b.h ---------

#ifndef B_H
#define B_H

#include "A.h"

class B : public A {};

#endif

//---------------

I'll improve this in the next release.
Comment 9 Dimitri van Heesch 2013-05-19 12:36:36 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.8.4. Please verify if this is indeed the case. Reopen the
bug if you think it is not fixed and please include any additional information
that you think can be relevant.