Need suggestion on how to fix the common crash in plasma-desktop (kdelibs related)

Lamarque V. Souza lamarque at kde.org
Wed Mar 21 12:06:05 GMT 2012


Em Wednesday 21 March 2012, David Faure escreveu:
> On Tuesday 20 March 2012 22:31:57 Lamarque V. Souza wrote:
> > WeatherEngine::~WeatherEngine() calls
> > WeatherEngine::unloadIons(), which tries to use the invalid
> > Plasma::DataEngineManager::self().
> 
> Since DataEngineManager uses K_GLOBAL_STATIC internally, just use the
> isDestroyed() method to know if it has already been destroyed, before
> calling self().

	I thought about doing that, but I would like to prevent an overhead that 
is needed only when plasma-{desktop,device} are exiting.
 
> More precisely, either add a isDestroyed method to the public class, which
> calls the one in the K_GLOBAL_STATIC, or let self() return 0 when
> privateDataEngineManagerSelf.isDestroyed().

	The Plasma::DataEngineManager::valid() I suggested is exactly returning 
the negation of privateDataEngineManagerSelf.isDestroyed(). I just wanted to 
know if there were other options. Ok, let's add a 
Plasma::DataEngineManager::isDestroyed(). Can I backport that to 4.8? Wrong 
question, I will have to it to 4.8 so that somebody forward ports it to 
master, duh.
 
> On a more philosophical note: this is exactly why "intelligent destructors"
> are to be avoided at all costs. All this wouldn't happen if the
> WeatherEngine destructor didn't call methods that do stuff.

	At least stuff with other object's pointer.

-- 
Lamarque V. Souza
KDE's Network Management maintainer
http://planetkde.org/pt-br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120321/115fe252/attachment.htm>


More information about the kde-core-devel mailing list