changeset 1883:c5ae9bbd5eff draft

dead lock fixed. ( failed to recover cyclic queue )
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 03 Jan 2014 15:54:36 +0900
parents 33c03287ff81
children d28f0c5489c3
files TaskManager/Cell/CellTaskManagerImpl.cc
diffstat 1 files changed, 7 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Fri Jan 03 10:36:37 2014 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Fri Jan 03 15:54:36 2014 +0900
@@ -282,22 +282,16 @@
             if (--list->self->flag.dim_count == 0) 
                 check_task_list_finish(schedTaskManager, list, waitTaskQueue);
             if (speTaskList[id]->getFirst() == list) {
-                if (list->next) 
+                if (list->next) {
                     speTaskList[id]->next = list->next;
-                else { // make it normal empty cyclic list
-                    speTaskList[id]->next = speTaskList[id];
-                    speTaskList[id]->prev = speTaskList[id];
+                } else { // make it normal empty cyclic list
+                    list->next = speTaskList[id];
+                    list->prev = speTaskList[id];
+                    speTaskList[id]->remove(list);
                 }
                 speTaskList[id]->free_(list);
-            }
-            if (taskListInfo[id]->getFirst() == list) {
-                if (list->next) 
-                    taskListInfo[id]->next = list->next;
-                else { // make it normal empty cyclic list
-                    taskListInfo[id]->next = taskListInfo[id];
-                    taskListInfo[id]->prev = taskListInfo[id];
-                }
-                taskListInfo[id]->free_(list);
+            } else {
+                fprintf(stderr,"mail_check error on %p\n",list);
             }
         }
         // MY_SPE_NOP: 特に意味のないコマンド