Index: kernel/generic/src/proc/program.c
===================================================================
--- kernel/generic/src/proc/program.c	(revision 01029fc7e46acbe4cd80f0a678a085d214882028)
+++ kernel/generic/src/proc/program.c	(revision 3b8a9907a4d66e672bf96c07661354131bae092f)
@@ -81,6 +81,7 @@
 	uintptr_t virt = USTACK_ADDRESS;
 	as_area_t *area = as_area_create(as,
-	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE,
-	    STACK_SIZE, AS_AREA_ATTR_NONE, &anon_backend, NULL, &virt, 0);
+	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
+	    AS_AREA_LATE_RESERVE, STACK_SIZE, AS_AREA_ATTR_NONE, &anon_backend,
+	    NULL, &virt, 0);
 	if (!area) {
 		task_destroy(prg->task);
Index: uspace/lib/c/generic/thread.c
===================================================================
--- uspace/lib/c/generic/thread.c	(revision 01029fc7e46acbe4cd80f0a678a085d214882028)
+++ uspace/lib/c/generic/thread.c	(revision 3b8a9907a4d66e672bf96c07661354131bae092f)
@@ -103,5 +103,6 @@
 	size_t stack_size = getpagesize() * THREAD_INITIAL_STACK_PAGES;
 	void *stack = as_area_create(AS_AREA_ANY, stack_size,
-	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
+	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
+	    AS_AREA_LATE_RESERVE);
 	if (stack == AS_MAP_FAILED) {
 		free(uarg);
