[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Need suggestion on how to fix the common crash in plasma-desktop (kdelibs related)
From:       "Lamarque V. Souza" <lamarque () kde ! org>
Date:       2012-03-21 1:31:57
Message-ID: 201203202231.57570.lamarque () kde ! org
[Download RAW message or body]

Hi,

	There is a crash in WeatherEngine (kde-workspace) triggered by the fact 
that Plasma::DataEngineManager::self() (kdelib) is invalid when 
plasma-{desktop,device} are exiting. WeatherEngine::~WeatherEngine() calls 
WeatherEngine::unloadIons(), which tries to use the invalid 
Plasma::DataEngineManager::self(). The crash only happens if there is 
something using WeatherEngine when plasma-{desktop,device} exit, of course. 
There are several bug report about this crash:

https://bugs.kde.org/show_bug.cgi?id=223622
https://bugs.kde.org/show_bug.cgi?id=241509
https://bugs.kde.org/show_bug.cgi?id=261610

	And counting. The reports were closed as upstrem but think we can 
prevent the crash by adding a method to Plasma::DataEngineManager to check if 
it is still valid. Using "if (Plasma::DataEngineManager::self()) {}" also 
triggers the crash because of the way Plasma::DataEngineManager::self() is 
implemented.

	What do you think about adding a Plasma::DataEngineManager::valid() 
method?


OBS: That crash is in WeatherEngine since it entered kde-workspace in 2009.

-- 
Lamarque V. Souza
KDE's Network Management maintainer
http://planetkde.org/pt-br

[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Tahoma'; font-size:12pt; font-weight:400; \
font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	Hi,</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	There is a crash in \
WeatherEngine (kde-workspace) triggered by the fact that \
Plasma::DataEngineManager::self() (kdelib) is invalid when plasma-{desktop,device} \
are exiting. WeatherEngine::~WeatherEngine() calls WeatherEngine::unloadIons(), which \
tries to use the invalid Plasma::DataEngineManager::self(). The crash only happens if \
there is something using WeatherEngine when plasma-{desktop,device} exit, of course. \
There are several bug report about this crash:</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">https://bugs.kde.org/show_bug.cgi?id=223622</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">https://bugs.kde.org/show_bug.cgi?id=241509</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">https://bugs.kde.org/show_bug.cgi?id=261610</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	And counting. The reports \
were closed as upstrem but think we can prevent the crash by adding a method to \
Plasma::DataEngineManager to check if it is still valid. Using &quot;if \
(Plasma::DataEngineManager::self()) {}&quot; also triggers the crash because of the \
way Plasma::DataEngineManager::self() is implemented.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">	What do you think about \
adding a Plasma::DataEngineManager::valid() method?</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">OBS: That crash is in \
WeatherEngine since it entered kde-workspace in 2009.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nbsp;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Lamarque V. Souza</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">KDE's Network Management \
maintainer</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">http://planetkde.org/pt-br</p></body></html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic