1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-24 04:07:55 +01:00

See #1426 trying to process events at the beginning SSHSession::terminate()

This commit is contained in:
Vadim Kurland 2010-04-27 18:22:47 +00:00
parent d1dc1d4f36
commit b2317a58fa
2 changed files with 20 additions and 1 deletions

View File

@ -1 +1 @@
#define BUILD_NUM 2850
#define BUILD_NUM 2851

View File

@ -254,6 +254,25 @@ void SSHSession::terminate()
<< "proc=" << proc
<< "heartBeatTimer=" << heartBeatTimer;
// Ticket #1426, SF bug 2990333. If installation process generates
// a lot of output and keeps the GUI busy updating buffers and
// progress log display, it becomes possible for the user to hit
// Cancel and place corresponding event in the queue after the
// process has actually finished but before its signal
// "processExited" could be processed by the slot
// SSHSession::terminated() This causes problems becuase we
// disconnect this signal here so we never process it
// anymore. Also, it looks like QProcess does not change its own
// state to indicate it is no longer running if its signal
// processExited has not been processed. This means that even
// though the background process has finished and exited, QProcess
// still thinks it is running. We try to send terminate and then
// kill signals to it in this function, to no avail. In the end,
// the program crashes trying to destroy QProcess object which
// still thinks it is running.
QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
stopHeartBeat();
if (proc!=NULL)