diff --git a/kernel/exit.c b/kernel/exit.c
index 5bcf911abdc2446d1ea9e9d6ca24d55ab78e4319..ecfda8819039b1d91d60eec17e25a83d5edbb6f5 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -772,6 +772,7 @@ void __noreturn do_exit(long code)
 
 	rq = this_rq();
 
+	//FIXME: This disclaimer is not really true anymore (since i dont follow it and it works either way)
 	/**
 	 * BEWARE:
 	 * We want to update the plan runtime model not too early to ensure that the exiting process
diff --git a/kernel/sched/pb.c b/kernel/sched/pb.c
index 992effee618731da00090dcfe1e2cb2f9f6e1ce2..b3204c169aa4df7175c65d9ea2867afd505762c5 100644
--- a/kernel/sched/pb.c
+++ b/kernel/sched/pb.c
@@ -291,10 +291,10 @@ static void dequeue_task_pb(struct rq *rq, struct task_struct *p, int flags)
 
 	bool process_exited = false;
 
-	printk("Dequeue task: %u\n", p->pid);
+	//printk("Dequeue task: %u\n", p->pid);
 
-	if (pb->waiting_on_io) {
-		printk("Waiting for IO\n", p->pid);
+	if (pb->waiting_on_io && p->state != TASK_DEAD) {
+		printk("Waiting for IO\n");
 		return;
 	}
 	pb->waiting_on_io = 1;