summaryrefslogtreecommitdiffstats
path: root/tools/runonphone/trksignalhandler.cpp
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2010-07-16 13:18:04 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2010-07-16 13:18:04 (GMT)
commit42f1e22bdfe2fe29f305dbf50e23933b8e1ef8d0 (patch)
tree1c5ae2797ac21da8214c7b8cdaeebe49926585d0 /tools/runonphone/trksignalhandler.cpp
parente2fb9c4df301678719cb0cff78838b35435c3b38 (diff)
parentad4aff6e2d188d88a2c6b4b692932adb08491d22 (diff)
downloadQt-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.cpp27
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)
{
}