diff --git a/Kernel/debug.c b/Kernel/debug.c
index e799f00f60ad80820e7a761156482ff761d1ad9e..379f6767778c00ec7225048fa397b5d7befba3ab 100644
--- a/Kernel/debug.c
+++ b/Kernel/debug.c
@@ -213,7 +213,7 @@ void Panic(const char *Fmt, ...)
 
 	Threads_Dump();
 
-	for(;;)	HALT();
+	for(;;)	;
 }
 
 void Debug_SetKTerminal(const char *File)
diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c
index e304b40e2a9c25a1b5fd0fddec6e820229b69b13..742b082a968540ad91864612dea2449d3ebb6bd0 100644
--- a/Kernel/syscalls.c
+++ b/Kernel/syscalls.c
@@ -68,6 +68,7 @@ void SyscallHandler(tSyscallRegs *Regs)
 	case SYS_CLONE:
 		// Call clone system call
 		ret = Proc_Clone(Regs->Arg1);
+		Log("Proc_Clone returned %i", ret);
 		// Change user stack if a new stack address is passed
 		if(ret == 0 && Regs->Arg2)
 			Regs->StackPointer = Regs->Arg2;
diff --git a/Kernel/threads.c b/Kernel/threads.c
index a81736b19bcfdee96eb17a8ce1b9fcec9f7010e4..f586f68a226bf9ccce84f75a9cc6388849684d79 100644
--- a/Kernel/threads.c
+++ b/Kernel/threads.c
@@ -124,6 +124,7 @@ void Threads_Init(void)
 	
 	Log_Debug("Threads", "Offsets of tThread");
 	Log_Debug("Threads", ".Priority = %i", offsetof(tThread, Priority));
+	Log_Debug("Threads", ".KernelStack = %i", offsetof(tThread, KernelStack));
 	
 	// Create Initial Task
 	#if SCHEDULER_TYPE == SCHED_RR_PRI
@@ -999,7 +1000,7 @@ void Threads_SegFault(tVAddr Addr)
 	tThread	*cur = Proc_GetCurThread();
 	cur->bInstrTrace = 0;
 	Log_Warning("Threads", "Thread #%i committed a segfault at address %p", cur->TID, Addr);
-	MM_DumpTables(0, KERNEL_BASE);
+	MM_DumpTables(0, USER_MAX);
 	Threads_Fault( 1 );
 	//Threads_Exit( 0, -1 );
 }
@@ -1292,7 +1293,7 @@ tThread *Threads_GetNextToRun(int CPU, tThread *Last)
 			}
 			// If we fall onto the same queue again, special handling is
 			// needed
-			if( Last && i == Last->Priority ) {
+			if( Last && Last->Status == THREAD_STAT_ACTIVE && i == Last->Priority ) {
 				tThread	*savedThread = thread;
 				
 				// Find the next unscheduled thread in the list
diff --git a/Kernel/vfs/mmap.c b/Kernel/vfs/mmap.c
index 7b4d103b049ae8c0ff8b6704d35f960e3c728485..e3e6d94886f7a89590a930e21b3cb6caf3023b7a 100644
--- a/Kernel/vfs/mmap.c
+++ b/Kernel/vfs/mmap.c
@@ -130,6 +130,7 @@ void *VFS_MMap(void *DestHint, size_t Length, int Protection, int Flags, int FD,
 			else
 			{
 				MM_Map( mapping_dest, pb->PhysAddrs[pagenum - pb->BaseOffset] );
+				MM_RefPhys( pb->PhysAddrs[pagenum - pb->BaseOffset] );
 				LOG("Cached map %X to %p (%P)", pagenum*PAGE_SIZE, mapping_dest,
 					pb->PhysAddrs[pagenum - pb->BaseOffset]);
 			}