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

List:       kde-bugs-dist
Subject:    [Bug 293004] Konversation crashes on exit [@ Phonon::PulseSupport::PulseSupport]
From:       Harald Sitter <sitter () kde ! org>
Date:       2012-05-24 11:06:55
Message-ID: bug-293004-17878-QyGWkj1B8m () http ! bugs ! kde ! org/
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=293004

Harald Sitter <sitter@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #10 from Harald Sitter <sitter@kde.org> ---
<apachelogger> PHONON_GLOBAL_STATIC(Phonon::FactoryPrivate, globalFactory)
<apachelogger> meaning the frontends should be long gone by the time
factoryprivate is destroyed
<apachelogger> hm
<apachelogger> coling: I know what causes the crash
<apachelogger> konvi's Sound object is parented by the QApp
<apachelogger> now for some reason QApp's dtor will first cleanup statics and
then delete the children
<coling> Interesting.
<apachelogger> which then leads to a case where the frontend objects (children
of qapp) are destroyed after the static privatefactory
<apachelogger> coling: why does shutdown not simply clean all stream caches?
<apachelogger> once the backend was destroyed the graph is defunct so that it
cannot ever output anything anyway
<coling> apachelogger, it could, but it shouldn't need to. The reason to do it
on AOP destruction is to save building up a massive cache for e.g. amarok or
another multi-stream long running app.
<apachelogger> hm
<apachelogger> well, that reduces options of handling this quite a bit :P
<apachelogger> a) protect every usage of getInstance b) destroy (private)
frontends in the privatefactory, which is save iff having qapp cleanup the
factory before the frontends is indeed the only case this order can appear c)
introduce a manual ref count
<apachelogger> c) would be such that every class that wants to use PA needs to
increment the counter in the ctor and decrease it in the dtor, once 0 PASupport
is terminated
<apachelogger> suffice to say c is the best but also most expensive approach ;)
<apachelogger> actually b might be best overall
<apachelogger> the dptr destruction is centralized in medianode

-- 
You are receiving this mail because:
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread] 

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