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

Reply via email to