Thread: [Doxygen-users] Segfault
Brought to you by:
dimitri
From: Berno L. <ber...@ep...> - 2001-06-30 18:55:19
|
Hello! I have a project that uses Qt. Therefore I create a Doxygen-Documentation of the Qt-Classes and let Doxygen produce a "tagfile.qt". If I create the docu of my project and use the "tagfile.qt", I get a segfault. If I do the same, but don't use the "tagfile.qt", all runs as expected. Ok, I admit that the Qt-Library isn't the "small example" that Dimitri always requests to find the error :-) The last words of Doxygen before the segfault are: --8<--------------------------------------------------------------------- Computing class relations... Searching for enumerations... Searching for member function documentation... [very much snipped] findMember(root=0x8ffc840,funcDecl=`QFontDatabase::createDatabase()',related=`(null)',overload=0,isFunc=1 mGrpId=-1 tArgList=(nil)="(null)" mtArgList=(nil)="(null)" scopeSpec=(null) memberSpec=(null) memSpec=0 findMember() Parse results: namespaceName=`(null)' className=`QFontDatabasePrivate::QFontDatabase` classTempList=`(null)' funcType=`(null)' funcName=`createDatabase' funcArgs=`()' funcTempList=`(null)' funcDecl=`QFontDatabasePrivate::QFontDatabase::createDatabase' related=`(null)' exceptions=`(null)' isRelated=0 isFriend=0 isFunc=1 1. funcName=`createDatabase' 2. member name exists 3. member definition found scopeName=`QFontDatabasePrivate::QFontDatabase' Member createDatabase (member scopeName=QFontDatabase) (this scopeName=QFontDatabasePrivate::QFontDatabase) classTempList=(null) Speicherzugriffsfehler --8<--------------------------------------------------------------------- As workaround I put an if clause around the cl=fd->getUsedClasses() in function findClassDefinition in doxygen.cpp: if ( fd ) { cl = fd->getUsedClasses(); } After that it works for me, and the resulting Documentation seems to be ok. Any hint where I should look in the docu what could be missing? --- Gruß Berno PS: I use Doxygen 1.2.8-20010617 and the qt-copy of KDE PPS: How can I activate the debugging output of Doxygen? I converted all Debug::print commands that interested me to printf to find the error ... |
From: Dimitri v. H. <di...@st...> - 2001-07-01 09:10:59
|
On Sat, Jun 30, 2001 at 08:46:13PM +0200, Berno Langer wrote: > Hello! > > I have a project that uses Qt. Therefore I create a Doxygen-Documentation of > the Qt-Classes and let Doxygen produce a "tagfile.qt". > > If I create the docu of my project and use the "tagfile.qt", I get a segfault. > > If I do the same, but don't use the "tagfile.qt", all runs as expected. > > Ok, I admit that the Qt-Library isn't the "small example" that Dimitri always > requests to find the error :-) > > The last words of Doxygen before the segfault are: > --8<--------------------------------------------------------------------- > Computing class relations... > Searching for enumerations... > Searching for member function documentation... > > [very much snipped] > > findMember(root=0x8ffc840,funcDecl=`QFontDatabase::createDatabase()',related=`(null)',overload=0,isFunc=1 > mGrpId=-1 tArgList=(nil)="(null)" mtArgList=(nil)="(null)" scopeSpec=(null) > memberSpec=(null) memSpec=0 > findMember() Parse results: > namespaceName=`(null)' > className=`QFontDatabasePrivate::QFontDatabase` > classTempList=`(null)' > funcType=`(null)' > funcName=`createDatabase' > funcArgs=`()' > funcTempList=`(null)' > funcDecl=`QFontDatabasePrivate::QFontDatabase::createDatabase' > related=`(null)' > exceptions=`(null)' > isRelated=0 > isFriend=0 > isFunc=1 > > 1. funcName=`createDatabase' > 2. member name exists > 3. member definition found scopeName=`QFontDatabasePrivate::QFontDatabase' > Member createDatabase (member scopeName=QFontDatabase) (this > scopeName=QFontDatabasePrivate::QFontDatabase) classTempList=(null) > Speicherzugriffsfehler > --8<--------------------------------------------------------------------- > > As workaround I put an if clause around the cl=fd->getUsedClasses() in > function findClassDefinition in doxygen.cpp: > > if ( fd ) { > cl = fd->getUsedClasses(); > } > > After that it works for me, and the resulting Documentation seems to be ok. > > Any hint where I should look in the docu what could be missing? > Your fix is correct. This is a bug. > --- > Gruß > > Berno > > PS: I use Doxygen 1.2.8-20010617 and the qt-copy of KDE > > PPS: How can I activate the debugging output of Doxygen? I converted all > Debug::print commands that interested me to printf to find the error ... doxygen -d debug_option [ -d debug_option ... ] can be used for this, where "debug_option" is one of the things mentioned in the DebugMask enum in src/debug.h I only use these for internal debugging, so it is likely that you do not understand the output ;-) Regards, Dimitri |
From: John S. <joh...@se...> - 2001-07-03 07:01:04
|
> > > > As workaround I put an if clause around the cl=fd->getUsedClasses() in > > function findClassDefinition in doxygen.cpp: > > > > if ( fd ) { > > cl = fd->getUsedClasses(); > > } > > > > After that it works for me, and the resulting Documentation seems to be ok. > > > > Any hint where I should look in the docu what could be missing? > > > > Your fix is correct. This is a bug. > > ... > > > --- > > > > PPS: How can I activate the debugging output of Doxygen? I converted all > > Debug::print commands that interested me to printf to find the error ... > > doxygen -d debug_option [ -d debug_option ... ] > > can be used for this, where "debug_option" is one of > the things mentioned in the DebugMask enum in src/debug.h > I also spent a couple of hours tracking down this bug, and in the process discovered another one: - if you do run doxygen with "-d FindMembers" then the Debug::print() function itself crashes as it tries to interpret NULL as a string :-( (this is Doxygen compiled with Sun's Solaris C++ compiler). Cheers, John |
From: Dimitri v. H. <di...@st...> - 2001-07-04 19:01:08
|
On Tue, Jul 03, 2001 at 08:58:03AM +0200, John Sturton wrote: > > > > doxygen -d debug_option [ -d debug_option ... ] > > > > can be used for this, where "debug_option" is one of > > the things mentioned in the DebugMask enum in src/debug.h > > > > I also spent a couple of hours tracking down this bug, and in the > process discovered another one: - if you do run doxygen with "-d > FindMembers" then the Debug::print() function itself crashes as it tries > to interpret NULL as a string :-( (this is Doxygen compiled with Sun's > Solaris C++ compiler). Debug::print() just uses vfprintf of the libc and its implementation on my GNU/Linux box can handle NULL strings, so it is good enough for me ;-) Regards, Dimitri |