<table><tr><td style="">dfaure added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D10824" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>I tested what happens in the current code when an idle job is killed. My testcase was configuring to use KIO in componentchooser ("open http urls in an application based on the contents on the URL") and then <tt style="background: #ebebeb; font-size: 13px;">kioclient5 exec www.kde.org</tt>. This puts the slave on hold while it emits the mimetype, while KIO runs the associated application for that mimetype.<br />
The idea was that the app can then use that job to resume the same transfer, if the app uses KIO. In my testcase it's launching konqueror+webenginepart, which doesn't use KIO, so the slave remains idle and gets killed later by klauncher.</p>

<p>What happens just after KLauncher::idleTimeout deletes the slave is that the slave goes to this code path inside mimeType() :</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">if (ret == -1) {
    qDebug() << "read error";
    exit();
}</pre></div>

<p>So in my testcase at least, it goes to SlaveBase::exit(), which is how the slave exits :)<br />
You could try the same set of debugging statements in your testcase... <a href="http://www.davidfaure.fr/2018/exit_debug.diff" class="remarkup-link" target="_blank" rel="noreferrer">http://www.davidfaure.fr/2018/exit_debug.diff</a> for kio and <a href="http://www.davidfaure.fr/2018/kinit.diff" class="remarkup-link" target="_blank" rel="noreferrer">http://www.davidfaure.fr/2018/kinit.diff</a> for kinit.<br />
Remember to restart kdeinit5 afterwards by typing kdeinit5 in a terminal - but I guess you know this already ;-)</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R303 KInit</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D10824" rel="noreferrer">https://phabricator.kde.org/D10824</a></div></div><br /><div><strong>To: </strong>chinmoyr, dfaure, Frameworks<br /><strong>Cc: </strong>Frameworks, michaelh<br /></div>