diff --git a/middleware/qira_program.py b/middleware/qira_program.py index 10337402..293f6414 100644 --- a/middleware/qira_program.py +++ b/middleware/qira_program.py @@ -417,6 +417,7 @@ class Trace: self.strace = [] self.mapped = [] + self.keep_analysis_thread = True threading.Thread(target=self.analysis_thread).start() def fetch_raw_memory(self, clnum, address, ln): @@ -502,8 +503,8 @@ class Trace: self.strace = ret def analysis_thread(self): - #print "*** started analysis_thread" - while 1: + print("*** started analysis_thread", self.forknum) + while self.keep_analysis_thread: time.sleep(0.2) # so this is done poorly, analysis can be incremental if self.maxclnum == None or self.db.get_maxclnum() != self.maxclnum: @@ -527,6 +528,7 @@ class Trace: self.needs_update = True #print "analysis is ready" + print("*** ended analysis_thread", self.forknum) def load_base_memory(self): def get_forkbase_from_log(n): diff --git a/middleware/qira_webserver.py b/middleware/qira_webserver.py index b54ea8a8..4980a1bf 100644 --- a/middleware/qira_webserver.py +++ b/middleware/qira_webserver.py @@ -146,7 +146,9 @@ def deletefork(forknum): global program print("deletefork", forknum) os.unlink(qira_config.TRACE_FILE_BASE+str(int(forknum))) - del program.traces[forknum] + if forknum in program.traces: + program.traces[forknum].keep_analysis_thread = False + del program.traces[forknum] push_updates() @socketio.on('doslice', namespace='/qira')