diff options
author | David Boddie <dboddie@trolltech.com> | 2010-07-16 13:18:04 (GMT) |
---|---|---|
committer | David Boddie <dboddie@trolltech.com> | 2010-07-16 13:18:04 (GMT) |
commit | 42f1e22bdfe2fe29f305dbf50e23933b8e1ef8d0 (patch) | |
tree | 1c5ae2797ac21da8214c7b8cdaeebe49926585d0 /tools/runonphone/trksignalhandler.cpp | |
parent | e2fb9c4df301678719cb0cff78838b35435c3b38 (diff) | |
parent | ad4aff6e2d188d88a2c6b4b692932adb08491d22 (diff) | |
download | Qt-42f1e22bdfe2fe29f305dbf50e23933b8e1ef8d0.zip Qt-42f1e22bdfe2fe29f305dbf50e23933b8e1ef8d0.tar.gz Qt-42f1e22bdfe2fe29f305dbf50e23933b8e1ef8d0.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7
Diffstat (limited to 'tools/runonphone/trksignalhandler.cpp')
-rw-r--r-- | tools/runonphone/trksignalhandler.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/tools/runonphone/trksignalhandler.cpp b/tools/runonphone/trksignalhandler.cpp index b6d446f..898692a 100644 --- a/tools/runonphone/trksignalhandler.cpp +++ b/tools/runonphone/trksignalhandler.cpp @@ -71,8 +71,10 @@ private: QFile crashlogtextfile; QFile crashstackfile; QList<CrashState> queuedCrashes; + QList<int> dyingThreads; QString crashlogPath; bool crashlog; + bool terminateNeeded; }; void TrkSignalHandler::copyingStarted() @@ -201,15 +203,23 @@ void TrkSignalHandler::stopped(uint pc, uint pid, uint tid, const QString& reaso cs.crashPC = pc; cs.crashReason = reason; - d->queuedCrashes.append(cs); - - if (d->queuedCrashes.count() == 1) { - d->err << "Fetching registers and stack..." << endl; - emit getRegistersAndCallStack(pid, tid); + if (d->dyingThreads.contains(tid)) { + if(d->queuedCrashes.isEmpty()) + emit terminate(); + else + d->terminateNeeded = true; + } else { + d->queuedCrashes.append(cs); + d->dyingThreads.append(tid); + + if (d->queuedCrashes.count() == 1) { + d->err << "Fetching registers and stack..." << endl; + emit getRegistersAndCallStack(pid, tid); + } } } else - emit resume(pid, tid); + emit terminate(); } void TrkSignalHandler::registersAndCallStackReadComplete(const QList<uint>& registers, const QByteArray& stack) @@ -307,6 +317,8 @@ void TrkSignalHandler::registersAndCallStackReadComplete(const QList<uint>& regi d->err << "Fetching registers and stack..." << endl; emit getRegistersAndCallStack(cs.pid, cs.tid); } + else if (d->terminateNeeded) + emit terminate(); } @@ -333,7 +345,8 @@ TrkSignalHandlerPrivate::TrkSignalHandlerPrivate() : out(stdout), err(stderr), loglevel(0), - lastpercent(0) + lastpercent(0), + terminateNeeded(false) { } |