[Uml-devel] KDE/kdesdk/umbrello/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Sat Sep 1 12:20:16 UTC 2007


SVN commit 707271 by okellogg:

resetTextBlocks(): Hotfix - work around crash.
If you are using Umbrello for production work, I strongly advise to deselect
"Use new C++/Java/Ruby Code Generators" in the General Settings.
The advanced code generators are still very prone to crash.


 M  +45 -0     codegenobjectwithtextblocks.cpp  


--- trunk/KDE/kdesdk/umbrello/umbrello/codegenobjectwithtextblocks.cpp #707270:707271
@@ -321,9 +321,54 @@
 }
 
 void CodeGenObjectWithTextBlocks::resetTextBlocks() {
+    /**************  @todo I had to deactivate this code:
     TextBlock *tb;
     for (TextBlockListIt it(m_textblockVector); (tb = it.current()) != NULL; ++it)
         delete tb;
+     **************  else the following crash happens on loading an XMI file:
+     Invalid read of size 4
+        at 0x8134BAA: QString::QString(QString const&) (qstring.h:650)
+        by 0x8331EE5: TextBlock::getTag() const (textblock.cpp:103)
+        by 0x82C4634: ClassifierCodeDocument::findCodeClassFieldTextBlockByTag(QString const&) (classifiercodedocument.cpp:730)
+        by 0x82F3940: HierarchicalCodeBlock::findCodeClassFieldTextBlockByTag(QString const&) (hierarchicalcodeblock.cpp:366)
+        by 0x82D71DC: CodeGenObjectWithTextBlocks::loadChildTextBlocksFromNode(QDomElement&) (codegenobjectwithtextblocks.cpp:422)
+        by 0x82D6DFF: CodeGenObjectWithTextBlocks::setAttributesFromNode(QDomElement&) (codegenobjectwithtextblocks.cpp:373)
+        by 0x82F3412: HierarchicalCodeBlock::setAttributesFromNode(QDomElement&) (hierarchicalcodeblock.cpp:290)
+        by 0x82F3248: HierarchicalCodeBlock::loadFromXMI(QDomElement&) (hierarchicalcodeblock.cpp:269)
+        by 0x82D760F: CodeGenObjectWithTextBlocks::loadChildTextBlocksFromNode(QDomElement&) (codegenobjectwithtextblocks.cpp:453)
+        by 0x82D6DFF: CodeGenObjectWithTextBlocks::setAttributesFromNode(QDomElement&) (codegenobjectwithtextblocks.cpp:373)
+        by 0x82CFB9C: CodeDocument::setAttributesFromNode(QDomElement&) (codedocument.cpp:414)
+        by 0x82C3CAE: ClassifierCodeDocument::setAttributesFromNode(QDomElement&) (classifiercodedocument.cpp:595)
+        by 0x82C4388: ClassifierCodeDocument::loadFromXMI(QDomElement&) (classifiercodedocument.cpp:687)
+        by 0x82D372E: CodeGenerator::loadFromXMI(QDomElement&) (codegenerator.cpp:205)
+        by 0x8356381: UMLDoc::loadExtensionsFromXMI(QDomNode&) (umldoc.cpp:1774)
+        by 0x8353F16: UMLDoc::loadFromXMI(QIODevice&, short) (umldoc.cpp:1480)
+        by 0x834DBB6: UMLDoc::openDocument(KUrl const&, char const*) (umldoc.cpp:475)
+        by 0x833F0DE: UMLApp::openDocumentFile(KUrl const&) (uml.cpp:642)
+        by 0x83098D9: initDocument(KCmdLineArgs*) (main.cpp:125)
+        by 0x830974D: main (main.cpp:101)
+      Address 0x66539DC is 12 bytes inside a block of size 68 free'd
+        at 0x401D567: operator delete(void*) (vg_replace_malloc.c:244)
+        by 0x8204CA2: CPPSourceCodeAccessorMethod::~CPPSourceCodeAccessorMethod() (cppsourcecodeaccessormethod.cpp:51)
+        by 0x82D6C6D: CodeGenObjectWithTextBlocks::resetTextBlocks() (codegenobjectwithtextblocks.cpp:333)
+        by 0x82D6001: CodeGenObjectWithTextBlocks::~CodeGenObjectWithTextBlocks() (codegenobjectwithtextblocks.cpp:42)
+        by 0x82F272A: HierarchicalCodeBlock::~HierarchicalCodeBlock() (hierarchicalcodeblock.cpp:41)
+        by 0x82D6C6D: CodeGenObjectWithTextBlocks::resetTextBlocks() (codegenobjectwithtextblocks.cpp:333)
+        by 0x82CF294: CodeDocument::resetTextBlocks() (codedocument.cpp:330)
+        by 0x82026EC: CPPSourceCodeDocument::resetTextBlocks() (cppsourcecodedocument.cpp:111)
+        by 0x82D6DE7: CodeGenObjectWithTextBlocks::setAttributesFromNode(QDomElement&) (codegenobjectwithtextblocks.cpp:370)
+        by 0x82CFB9C: CodeDocument::setAttributesFromNode(QDomElement&) (codedocument.cpp:414)
+        by 0x82C3CAE: ClassifierCodeDocument::setAttributesFromNode(QDomElement&) (classifiercodedocument.cpp:595)
+        by 0x82C4388: ClassifierCodeDocument::loadFromXMI(QDomElement&) (classifiercodedocument.cpp:687)
+        by 0x82D372E: CodeGenerator::loadFromXMI(QDomElement&) (codegenerator.cpp:205)
+        by 0x8356381: UMLDoc::loadExtensionsFromXMI(QDomNode&) (umldoc.cpp:1774)
+        by 0x8353F16: UMLDoc::loadFromXMI(QIODevice&, short) (umldoc.cpp:1480)
+        by 0x834DBB6: UMLDoc::openDocument(KUrl const&, char const*) (umldoc.cpp:475)
+        by 0x833F0DE: UMLApp::openDocumentFile(KUrl const&) (uml.cpp:642)
+        by 0x83098D9: initDocument(KCmdLineArgs*) (main.cpp:125)
+        by 0x830974D: main (main.cpp:101)
+     *************/
+
     m_textBlockTagMap.clear();
     m_textblockVector.clear();
 }




More information about the umbrello-devel mailing list