<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103247/">http://git.reviewboard.kde.org/r/103247/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Plasma.</div>
<div>By Jonathan Marten.</div>







<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The referenced bug describes a Plasma crash caused by a TaskSource (used by the "tasks" data engine) retaining a pointer to a Task.  When its associated window is closed, the Task is deleted but somehow the TaskSource is not.  This causes a dangling pointer crash when the TaskSource next gets the currentDesktopChanged() signal (and presumably also currentActivityChanged() if activities are in use).

The source should get deleted in DataEngine::removeSource() via deleteLater().  This does not seem to work - if a single shot timer is used instead (as also in commits 0f40b577 and 52783c6c), the TaskSource gets deleted correctly and the crash does not happen.

(This also resulted in a TaskSource memory leak).</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Verified that the TaskSource destructor is never called by adding a kDebug() there.

Built kdelibs and kdeworkspace with this change, used for day-to-day work (when the crash used to happen quite regularly) and with the crash scenario described in the bug.  The TaskSource destructor is called as expected, and the crash does not happen.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="http://bugs.kde.org/show_bug.cgi?id=286353">286353</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>plasma/dataengine.cpp <span style="color: grey">(c33b103)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103247/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>