diff --git a/lib/genode_cpp/threads.h b/lib/genode_cpp/threads.h
index a1cd61cd2c..043f808f10 100644
--- a/lib/genode_cpp/threads.h
+++ b/lib/genode_cpp/threads.h
@@ -13,7 +13,6 @@
#define _GENODE_CPP__THREAD_H_
#include
-#include
#include
namespace Nim { struct SysThread; }
diff --git a/lib/system/threads.nim b/lib/system/threads.nim
index 4855a2b93f..7743fffff5 100644
--- a/lib/system/threads.nim
+++ b/lib/system/threads.nim
@@ -593,6 +593,8 @@ elif defined(genode):
proc createThread*[TArg](t: var Thread[TArg],
tp: proc (arg: TArg) {.thread, nimcall.},
param: TArg) =
+ t.core = cast[PGcThread](allocShared0(sizeof(GcThread)))
+
when TArg isnot void: t.data = param
t.dataFn = tp
when hasSharedHeap: t.stackSize = ThreadStackSize