umbrello crashes after unloading the mentioned file. Reproducible: Always Steps to Reproduce: 1. start umbrello 2. open file from url 3. create a new document Actual Results: umbrello crashes Expected Results: umbrello should not crash
Created attachment 91506 [details] backtrace
Created attachment 91507 [details] backtrace from 2.15.3 version 2.15.3 is also affected. the crash happens on a slightly modified location. Common ancester with 2.15.80 is the call to qApp->processEvents() in UMLApp::setCurrentView()…
git bisect returned commit 69ec36139554f4b4c2fd4089beb4cb83c13efbbb a the commit which introduces the crash. After removing the call to createBirdView() from UMLApp::setCurrentView() the crash disappears. From a first look it shows that because class BirdView adds an additional view for the current scene, that there might be a a problem in setCurrentView() and related methods with multiple views/scene combination. BirdView::BirdView(QDockWidget *parent, UMLView* view) { // create view and add it to the container frame UMLScene* scene = m_view->umlScene(); m_birdView = new QGraphicsView(scene); //A: , container); The call stack shows, that in the error case there are multiple removeView... calls raised by a call to qApp->processEvents() in UMLApp::setCurrentView() After removing this call (without the above mentioned workaround) the crash disappears. The call to processEvent() has been added in KDE 3.5 times as a hacky workaround. commit 455fb83e413f0d8361d8c025a7fbc20ecf339807 Author: Oliver Kellogg <okellogg@users.sourceforge.net> Date: Fri Sep 22 06:23:00 2006 +0000 setCurrentView(): Had to insert kapp->processEvents() because clicking on different diagrams in the list view was not working properly. (This is hacky. Perhaps somebody has a better idea?) svn path=/branches/KDE/3.5/kdesdk/umbrello/; revision=587279 Without this call clicking on different diagrams is not an issue anymore, so it looks anyway obsolate. Any comments ?
(In reply to Ralf Habacker from comment #3) > [...] > Without this call clicking on different diagrams is not an issue anymore, so > it looks anyway obsolete. Any comments ? If diagram updating works without: All the better! [ On the side, considering the lengthy backtrace I am amazed that it doesn't crash elsewhere after removal of the qApp->processEvents() ]
Git commit 7ac6297cfdfe4f183c0345ecab84fe432267e95a by Ralf Habacker. Committed on 09/03/2015 at 19:24. Pushed by habacker into branch 'Applications/15.04'. Fix 'Crash on close of xmi file'. FIXED-IN:2.15.90 (KDE 15.03.90) M +0 -1 umbrello/uml.cpp http://commits.kde.org/umbrello/7ac6297cfdfe4f183c0345ecab84fe432267e95a
Git commit 70c1f1d3849720b719ffb197f0a0a8a5089f7bca by Ralf Habacker. Committed on 12/03/2015 at 12:58. Pushed by habacker into branch 'master'. Add UMLScene::getBackgroundColor() as common method to fetch the current scene background color. This patch helps to avoid a crash caused by UMLScene::activeView() returning zero, which happens while tracking this bug. M +11 -0 umbrello/umlscene.cpp M +2 -0 umbrello/umlscene.h M +1 -1 umbrello/widgets/artifactwidget.cpp M +3 -3 umbrello/widgets/classifierwidget.cpp M +1 -1 umbrello/widgets/componentwidget.cpp M +1 -1 umbrello/widgets/datatypewidget.cpp M +1 -1 umbrello/widgets/entitywidget.cpp M +1 -1 umbrello/widgets/enumwidget.cpp M +1 -1 umbrello/widgets/nodewidget.cpp M +1 -1 umbrello/widgets/objectwidget.cpp M +1 -1 umbrello/widgets/packagewidget.cpp M +1 -1 umbrello/widgets/pinportbase.cpp http://commits.kde.org/umbrello/70c1f1d3849720b719ffb197f0a0a8a5089f7bca
Git commit 4830d8b424b0630e5510b37629161009c5238f07 by Ralf Habacker. Committed on 12/03/2015 at 12:58. Pushed by habacker into branch 'Applications/15.04'. Add UMLScene::getBackgroundColor() as common method to fetch the current scene background color. This patch helps to avoid a crash caused by UMLScene::activeView() returning zero, which happens while tracking this bug. M +11 -0 umbrello/umlscene.cpp M +2 -0 umbrello/umlscene.h M +1 -1 umbrello/widgets/artifactwidget.cpp M +3 -3 umbrello/widgets/classifierwidget.cpp M +1 -1 umbrello/widgets/componentwidget.cpp M +1 -1 umbrello/widgets/datatypewidget.cpp M +1 -1 umbrello/widgets/entitywidget.cpp M +1 -1 umbrello/widgets/enumwidget.cpp M +1 -1 umbrello/widgets/nodewidget.cpp M +1 -1 umbrello/widgets/objectwidget.cpp M +1 -1 umbrello/widgets/packagewidget.cpp M +1 -1 umbrello/widgets/pinportbase.cpp http://commits.kde.org/umbrello/4830d8b424b0630e5510b37629161009c5238f07