diff --git a/tools/packaging/test262.py b/tools/packaging/test262.py
index 1192005fc9674c901933b312c3439e51efb21429..26f3f8b52630bc8fe052514a7ae48a92ebd6b282 100755
--- a/tools/packaging/test262.py
+++ b/tools/packaging/test262.py
@@ -583,6 +583,7 @@ class TestSuite(object):
           SkipCaseElement.append(SkipElement)
           TestSuiteElement.append(SkipCaseElement)
 
+    threads = []
     if workers_count > 1:
       pool_sem = threading.Semaphore(workers_count)
       log_lock = threading.Lock()
@@ -613,11 +614,13 @@ class TestSuite(object):
         exec_case()
       else:
         pool_sem.acquire()
-        threading.Thread(target=exec_case).start()
+        thread = threading.Thread(target=exec_case)
+        threads.append(thread)
+        thread.start()
         pool_sem.release()
 
-    if workers_count > 1:
-      log_lock.acquire()
+    for thread in threads:
+      thread.join()
 
     if print_summary:
       self.PrintSummary(progress, logname)
@@ -628,9 +631,6 @@ class TestSuite(object):
         print "Use --full-summary to see output from failed tests"
     print
 
-    if workers_count > 1:
-      log_lock.release()
-
     return progress.failed
 
   def WriteLog(self, result):