Index: common.scm
==================================================================
--- common.scm
+++ common.scm
@@ -2655,7 +2655,11 @@
   ;; may need to trap and ignore exceptions -- dunno how atomic threads are...
   (for-each
    (lambda (thread-name)
      (let* ((thread (hash-table-ref/default *common:thread-punchlist* thread-name #f)))
        (if thread
-           (thread-join! thread))))
+           (handle-exceptions
+           exn
+           #t ;; just ignore it, it might have died in the meantime so joining it will throw an exception
+           (thread-join! thread))
+           )))
    (hash-table-keys *common:thread-punchlist*)))

Index: subrun.scm
==================================================================
--- subrun.scm
+++ subrun.scm
@@ -87,11 +87,11 @@
 
 (define (subrun:set-state-status test-run-dir state status new-state-status)
   (if (and (not (subrun:subrun-removed? test-run-dir)) (subrun:subrun-test-initialized? test-run-dir))
       (let* ((log-prefix (subrun:sanitize-path
                           (conc "set-state-status="new-state-status
-                                (if state (conc ":state="(state) "")
+                                (if state (conc ":state="state "")
                                     (if status (conc "+status="status) "")))))
              (submt-result 
               (subrun:exec-sub-megatest test-run-dir action-switches-str log-prefix)))
         submt-result)))