From 607cf43ebe6147e1c032f3a14127ab4c343101c3 Mon Sep 17 00:00:00 2001
From: "David J. Bremer" <dbremer@llnl.gov>
Date: Fri, 28 Aug 2009 01:13:39 +0000
Subject: [PATCH] If a message comes in twice saying a given task exited, print
 an error instead of doing an assertion failure.

---
 src/srun/task_state.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/srun/task_state.c b/src/srun/task_state.c
index d2a1dd9d8fc..db7f622d622 100644
--- a/src/srun/task_state.c
+++ b/src/srun/task_state.c
@@ -124,15 +124,23 @@ void task_state_update (task_state_t ts, int taskid, task_state_type_t t)
 		bit_set (ts->start_failed, taskid);
 		break;
 	case TS_NORMAL_EXIT:
-		bit_set (ts->normal_exit, taskid);
 		bit_clear (ts->running, taskid);
-		ts->n_exited++;
+		if (bit_test(ts->normal_exit, taskid)) {
+			error("Task %d reported exit for a second time.");
+		} else {
+			bit_set (ts->normal_exit, taskid);
+			ts->n_exited++;
+		}
 		break;
 	case TS_ABNORMAL_EXIT:
 		bit_clear (ts->running, taskid);
-		bit_set (ts->abnormal_exit, taskid);
-		ts->n_exited++;
-		ts->n_abnormal++;
+		if (bit_test(ts->abnormal_exit, taskid)) {
+			error("Task %d reported exit for a second time.");
+		} else {
+			bit_set (ts->abnormal_exit, taskid);
+			ts->n_exited++;
+			ts->n_abnormal++;
+		}
 		break;
 	}
 
-- 
GitLab