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)))