chinmoyr added a comment.
I haven't yet tried your patch (which btw involves the http ioslave right?) but I am quite sure that exit() is not called for file ioslave after interrupting the application. I have placed the debug statements inside exit() as well as before every exit() call and I am not seeing any output. That aside here's what I have observed till now, After IdleSlave is created, inside `dispatchLoop()` SlaveBase waits in this line if (d->appConnection.hasTaskAvailable() || d->appConnection.waitForIncomingTask(ms)) { with `appConnection` having no tasks available. After deleting the IdleSlave `waitForIncomingTask` returns false because the `Connection` object in IdleSlave was destroyed which interrupted the connection and changed the socket state from `QAbstractSocket::ConnectedState` (It's merely a speculation. I haven't verified it yet). Then the variable `ret` is assigned -1. Since the connection was interrupted, SlaveBase returns from `dispatchLoop` and in `FileProtocol` kdemain returns thus terminating the process. Please fill me in if you think I have missed something. REPOSITORY R303 KInit REVISION DETAIL https://phabricator.kde.org/D10824 To: chinmoyr, dfaure, #frameworks Cc: #frameworks, michaelh