[Doxygen-develop] Crashing bug in TreeDiagram::drawConnectors at diagram.cpp:816
Brought to you by:
dimitri
From: Olaf S. <rh...@po...> - 2002-10-28 16:50:51
|
I am using doxygen-1.2.18 on NetBSD 1.4.2. I installed it via the pkg system (compiling from source). Since I wanted to see a bigger example that the given examples, I wanted to run doxygen on its own sources. So I did this: $ cd doxygen-1.2.18/src $ doxygen -g config edited file "config" so that INPUT = ., and no other changes $ doxygen config this ran for some time, the last lines of output are this> Generating code for file util.h... Generating code for file version.h... Generating code for file xmldocvisitor.h... Generating code for file xmlgen.h... Generating file documentation... Generating docs for file defargs.cpp... Generating docs for file main.cpp... Generating docs for file outputlist.cpp... Generating docs for file translator.cpp... Generating class documentation... Generating annotated compound index... Generating hierarchical class index... Generating member index... Generating docs for compound Argument... Generating docs for compound ArgumentList... Generating docs for compound BaseClassDef... Generating docs for compound BaseClassList... Generating docs for compound BaseClassListIterator... Generating docs for compound BaseCodeDocInterface... Segmentation fault $ Examining this from gdb shows that the crash occurs here: Generating docs for compound BaseCodeDocInterface... Program received signal SIGSEGV, Segmentation fault. 0x2a1ca5 in TreeDiagram::drawConnectors (this=0x2cae600, t=@0xbfbfc6a0, image=0x0, doBase=false, bitmap=false, baseRows=1, superRows=4, cellWidth=0, cellHeight=0) at diagram.cpp:816 816 t << protToString(di->protection()) << endl; (gdb) bt #0 0x2a1ca5 in TreeDiagram::drawConnectors (this=0x2cae600, t=@0xbfbfc6a0, image=0x0, doBase=false, bitmap=false, baseRows=1, superRows=4, cellWidth=0, cellHeight=0) at diagram.cpp:816 #1 0x2a6519 in ClassDiagram::writeFigure (this=0xbfbfd068, output=@0x60ca5c, path=0x1486040 "/usr/tmp/devel/doxygen/work/doxygen-1.2.18/src/latex", fileName=0x4dbb360 "classBaseCodeDocInterface") at diagram.cpp:1233 #2 0x159c46 in LatexGenerator::endClassDiagram (this=0x60ca00, d=@0xbfbfd068, fileName=0x4dbb360 "classBaseCodeDocInterface") at latexgen.cpp:1420 #3 0x18c194 in OutputList::forall (this=0x6635a0, func={__delta = 0, __index = 173, __pfn_or_delta2 = {__pfn = (void ( OutputGenerator::*)( ClassDiagram &,char *,char *)) 303104, __delta2 = 0}}, a1=@0xbfbfd068, a2=0x4dbb360 "classBaseCodeDocInterface", a3=0x4d32420 "BaseCodeDocInterface") at outputlist.cpp:305 #4 0x18d57a in OutputList::endClassDiagram (this=0x6635a0, d=@0xbfbfd068, f=0x4dbb360 "classBaseCodeDocInterface", n=0x4d32420 "BaseCodeDocInterface") at outputlist.h:370 #5 0x24e963 in ClassDef::writeDocumentation (this=0x34dd000, ol=@0x6635a0) at classdef.cpp:1012 #6 0x2100d in generateClassList (classSDict=@0x4b02fc) at doxygen.cpp:5547 #7 0x212c6 in generateClassDocs () at doxygen.cpp:5588 #8 0x30784 in generateOutput () at doxygen.cpp:7770 #9 0x1957 in main (argc=2, argv=0xbfbfd5c8) at main.cpp:37 (gdb) list 811 protToMask(di->protection())); 812 } 813 } 814 else // draw pixels 815 { 816 t << protToString(di->protection()) << endl; 817 if (doBase) 818 { 819 t << "1 " << di->xPos()/(float)gridWidth << " " 820 << (di->yPos()/(float)gridHeight+superRows-1) << " in\n"; (gdb) print di $1 = (DiagramItem * ?) 0x2cae500 (gdb) print *di $2 = {children = 0x2cae540, parent = 0x4588940, x = 125, y = 100, num = 0, prot = Public, virt = Normal, templSpec = {<QArray<char>> = {<QGArray> = { shd = 0x4d4c330, _vptr$ = 0x2a85d0{8 vtable entries, 0x2a8408 <QCString::~QCString(void)>, 0x2a85b8 <QArray<char>::detach(void)>, 0x39f214 <QGArray::newData(void)>, 0x39f2b0 <QGArray::deleteData(QGArray::array_data *)>, 0x2a8afc <QArray<char> type_info function>, 0x2a8304 <QArray<char>::~QArray(void)>, 0x2a85b8 <QArray<char>::detach(void)>, 0x39f214 <QGArray::newData(void)>}}, <No data fields>}, <No data fields>}, inList = false, classDef = 0x34e0000} (gdb) info locals x = 0 y = 0 dil = (DiagramItemList * ?) 0x2cae540 parent = (DiagramItem * ?) 0x4588940 di = (DiagramItem * ?) 0x2cae500 this = (TreeDiagram * ?) 0x2cae600 dr = (DiagramRow * ?) 0x2cae5c0 done = false (gdb) If I add -O2 to the Makefile.libdoxygen then a different crash occurs: Generating code for file translator_ua.h... Generating code for file treeview.h... Generating code for file unistd.h... Generating code for file util.h... Generating code for file version.h... Generating code for file xmldocvisitor.h... Generating code for file xmlgen.h... Generating file documentation... Generating docs for file defargs.cpp... Program received signal SIGSEGV, Segmentation fault. 0x51cc8e in QGArray type_info function () (gdb) bt #0 0x51cc8e in QGArray type_info function () #1 0x51bd83 in QGArray::~QGArray () #2 0x2780c1 in MemberDef::isConstructor (this=0x11f9e00) at ../qtools/qarray.h:60 #3 0x268787 in MemberDef::isBriefSectionVisible (this=0x11f9e00) at memberdef.cpp:607 #4 0x27bf0e in MemberList::countDecMembers (this=0x7740d4) at memberlist.cpp:65 #5 0x27e404 in MemberList::writeDeclarations (this=0x7740d4, ol=@0x7d15a0, cd=0x0, nd=0x0, fd=0x774000, gd=0x0, title=0x4ef1af0 "Defines", subtitle=0x0) at memberlist.cpp:416 #6 0x821fb in FileDef::writeDocumentation (this=0x774000, ol=@0x7d15a0) at filedef.cpp:386 #7 0x42042 in generateFileDocs () at doxygen.cpp:5442 #8 0x611ef in generateOutput () at doxygen.cpp:7767 #9 0x1957 in main (argc=2, argv=0xbfbfd5c8) at main.cpp:37 (gdb) Any ideas? -Olaf. -- ___ Olaf 'Rhialto' Seibert - rhialto@ -- Woe betide the one who feels \X/ polderland.nl -- remorse without sin - Tom Poes, "Het boze oog", 4444. |