<div dir="ltr"><div dir="ltr"><div>Dear all, </div><div><br></div><div>I have been implementing a resource sharing protocol for an existing multiprocessor scheduling algorithm in Litmus. </div><div><br></div><div>Sometimes some tasks remain zombies after the time to stop the experiment. Debugging and investigating the logs, I noticed that these tasks pass through this code, inside kernel/sched/litmus.c</div><div><br></div><div><span style="white-space:pre"> </span>/* check if the task became invalid while we dropped the lock */</div><div><span style="white-space:pre">      </span>if (next && (!is_realtime(next) || !tsk_rt(next)->present)) {</div><div><span style="white-space:pre">              </span>TRACE_TASK(next,</div><div><span style="white-space:pre">                      </span>"BAD: next (no longer?) valid\n");</div><div><span style="white-space:pre">          </span>litmus->next_became_invalid(next);</div><div><span style="white-space:pre">         </span>litmus_reschedule_local();</div><div><span style="white-space:pre">            </span>next = NULL;</div><div><span style="white-space:pre">  </span>}</div><div><br></div><div>I noticed that the value of the attribute called "present" is 0 at that point. </div><div><br></div><div>This condition can make the task zombie? What can make this value equals to 0 and how can I avoid it? The algorithm code does not set this value explicitly. </div><div><br></div><div>Best regards,</div><div><br></div><div>Ricardo</div></div></div>