diff --git a/Lib/trace.py b/Lib/trace.py
index 9575911..89f3162 100644
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -50,6 +50,7 @@
 import os
 import re
 import sys
+import threading
 import token
 import tokenize
 import types
@@ -317,9 +318,9 @@
                 # #pragma: NO COVER
                 if lineno in lnotab and not PRAGMA_NOCOVER in lines[i]:
                     outfile.write(">>>>>> ")
+                    n_lines += 1
                 else:
                     outfile.write("       ")
-                n_lines += 1
             outfile.write(lines[i].expandtabs(8))
         outfile.close()
 
@@ -437,22 +438,26 @@
         dict = __main__.__dict__
         if not self.donothing:
             sys.settrace(self.globaltrace)
+            threading.settrace(self.globaltrace)
         try:
             exec cmd in dict, dict
         finally:
             if not self.donothing:
                 sys.settrace(None)
+                threading.settrace(None)
 
     def runctx(self, cmd, globals=None, locals=None):
         if globals is None: globals = {}
         if locals is None: locals = {}
         if not self.donothing:
             sys.settrace(self.globaltrace)
+            threading.settrace(self.globaltrace)
         try:
             exec cmd in globals, locals
         finally:
             if not self.donothing:
                 sys.settrace(None)
+                threading.settrace(None)
 
     def runfunc(self, func, *args, **kw):
         result = None
