diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 939:9cfac2e8fc2e

loop detection.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 31 Jul 2010 12:18:19 +0900
parents ad95be23c794
children 0d404f6c36a8
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sat Jul 31 10:32:19 2010 +0900
+++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sat Jul 31 12:18:19 2010 +0900
@@ -156,6 +156,8 @@
 void
 TaskManagerImpl::check_task_finish(HTaskPtr me, HTaskInfo *wait_queue)
 {
+    if (me->self == 0)
+	printf("  wait for zombi! %ld\n",(long)me);
 
     while(TaskQueue *p = me->wait_me->poll()) {
 	HTaskPtr you = p->task;
@@ -173,6 +175,14 @@
 	wait_i->free_(p);
     }
 
+    // me を誰かが持っていて、me が finish した後に、
+    // me->wait_for(i) とか、やられると気まずい。
+    // 特に、me が他人に再利用されていると。そういう時には、
+    // このfreeをコメントアウトしてみる。
+
+    //    id かななんかでチェックした方が良いが...
+
+    me->self = 0;
     htaskImpl->free_(me);
 }