GNOME Bugzilla – Bug 696925
Doxygen gets confused and repeats things thousands of times
Last modified: 2013-05-19 12:36:36 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/
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=...
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?
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.
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.
Created attachment 240187 [details] screenshot of problem in juce::TopLevelWindow using source files from comment #4
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.
Created attachment 240188 [details] Doxywizard Log File
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.
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.